묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
14.22 포인터에 대한 질문
안녕하세요, 14.22 강의를 듣다가 함수 포인터는 아니지만 예제 속 변수의 포인터에 관한 의문이 생겨 질문 남깁니다.1.해당 예제를 따라하다가 toupper, tolower함수의 사용과 변수들의 저장에 대해 궁금증이 생겨 아래 코드를 작성하고 실행을 시켜 보았는데요,void ToUpper(char* str1) { printf("Address of str(before toupper function operate) : %lld\n", (long long)str1); while (*str1) { *str1 = toupper(*str1); str1++; } printf("Address of str(after toupper function operate) : %lld\n", (long long)str1); } void ToLower(char* str2) { printf("Address of str(before tolower function operate) : %lld\n", (long long)str2); while (*str2) { *str2 = tolower(*str2); str2++; } printf("Address of str(after tolower function operate) : %lld\n", (long long)str2); } int main() { char str[] = "Hello World!"; void (*pf)(char*); pf = &ToUpper; printf("String literal: %lld\n", (long long)("Hello, World!")); printf("Function pointer: %lld\n", (long long)ToUpper); printf("Function pointer, pointer ver: %lld\n", (long long)pf); printf("Variable : %lld\n", (long long)str); printf("\n"); (*pf)(str); printf("\n"); printf("ToUpper ver: %s\n", str); printf("Address of str after function ToUpper Operate: %lld\n", (long long)str); pf = &ToLower; printf("\n"); (*pf)(str); printf("\n"); printf("ToLowerr ver: %s\n", str); printf("Address of str after function ToLower Operate: %lld\n", (long long)str); return 0; } 먼저 main 함수 내에서 str의 주소를 찍어 본 결과 "Variable : 803261380856"라는 주소값이 출력된 걸 볼 수 있고 이를 ToUpper 함수에 넣고 다시 주소를 찍어보니 "Address of str(before toupper function operate) : 803261380856"로, 같은 주소가 출력된 걸 볼 수 있었습니다. (char*로 받아줬으니 당연하겠지만요.) 이후 ToUpper 함수 내에서 toupper 함수가 포함된 while 문이 돌아간 후 다시 주소를 찍어보니 원래 값보다 12가 추가된 803261380868라는 값이 출력된 걸 볼 수 있었고, 이는 while문 내에서 str1++연산이 수행되며 *str의 각 characer를 대문자로 바꿔주는 과정이 있었기 때문에라고 생각했습니다.의문이 생겼던 부분으로, ToUpper가 실행된 결과가 끝나고 "ToUpper ver: HELLO WORLD!"가 출력된 후, str의 주소를 다시 찍어봤는데 12가 추가된 값이 아닌 원래의 주소값이 출력이 된 걸 볼 수 있었는데요,처음에는 ToUpper 함수의 매개변수의 데이터 타입이 char*이니, 막연하게 str의 주소도 당연히 바뀐 값이 나올 거라고 생각했었는데생각해보니 위 경우는 포인터의 참조값을 사용한 것이 아닌 포인터 자체의 값을 연산한 것이니 call by value로 포인터 변수가 사용된 것이며, main 함수의 str과 ToUpper의 매개변수인 str1은 처음에는 가리키는 주소가 같았으나 str1의 경우 함수 내에서 가리키는 값이 증가한 후, 해당 함수가 끝날 때 같이 사라지는 지역변수로서 사용된 것이라는 결론이 나왔습니다.제가 생각한 과정과 결과가 맞는지 궁금합니다.2.main 함수에서 str의 타입이 char[]로 지정이 되어 있는데, 이를 char* str로 바꾸니 런타임 에러가 나더라구요.char* str로 문자열에 접근하는 것은 read only인 Text Segment의 주소를 가져온 것인데, ToUpper 함수 내에서 str = toupper(str)에서 값을 바꾸려는 시도 때문에 에러가 나는 것이 맞나요? 감사합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
11:29 C언어 문제
gets(n)이 n을 입력받는 함수라는 거 이해했고,근데 name() 에 ()가 있어서 () 에 홍길동을 입력받는건가요? name이 똑같이 n에다가 덮어쓴다는게 뭘 보고 알 수 있는건가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
28분 23년1회 java문제 다시
설명을 들어서a=10 static.b = a니까 static.b++의 출력값은 10이고, 이후 11이 된다고 이해를 했는데,그러면 그 아래 출력값 a가 10 이면 그대로 똑같이 10이 아니라왜 st.a는 class Static의 20을 가져오나요? 두번째 출력값은 바로 위 출력값에서 계산된 걸 가져왔는데 네번째 출력값은 왜 가장 위의 클래스 거를 가지고 오는지 개념이 이해가 안됩니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
28분 문제..
28분대에 있는 23년 1회 JAVA 문제인데요.출력값 처음에Static.b++는 a=10 static.b=a 때문에 출력값 10인 건 이해가 되고,st.b는 왜 0이 아니고, 11인지 이해가 안되고.. 마지막 출력값 st.a은 왜 10이 아니고 20인지 이해가 안되네요. 기출문제부터 따라가기 너무 힘든데 이거 강의를 다시 들어야하나요? 혼자서 문제를 풀면 문제 설명하는 흐름대로 생각이 잘 안나는 것 같아요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
13:40 di가 ..
질문이 2개인데요...문제 풀이영상을 보면sum + (input[a][b]) * di ; input[a][b]에 %10을 넣으면 뭐 때문에 순차적으로 0 , 10, 100, 1000, 00000, 100000 이렇게 되는지 이해가 안되고, 2번째는di가 1부터 시작을 하고 di*2면 2,4,6,8,10 이렇게 커지는거 아닌가요? 그렇다면 2의2승 2의3승 2의4승 2의5승 이렇게 커지지 않으니까 계산이 안되는 것 같은데 ㅠ.. 좀 어렵네요
-
해결됨독하게 시작하는 C 프로그래밍
getchar()함수의 반환형에 대해 질문드립니다.
안녕하세요. 공부할 때 chat gpt를 자주 활용하고 있습니다. chat gpt에 따르면 getchar()함수를 반환하려면 char a; a = getchar();가 아니라int a;a = getchar();int형으로 반환을 받아야한다고 하더라구요.EOF를 구분하기 위해서라는데...그런데 예제들을 보면 char형으로 받는 예제들도 많아서 질문드립니다.감사합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
6:45 생성자가 있는지 없는지
유형2의 문제인데요. 생성자가 있는지 없는지 판단하는걸 어떻게 하는거죠?class가 있으면 생성자가 있는 거 아닌가요 ㅠ?
-
해결됨Windows 시스템 프로그래밍 - 기본
스택 크기 결정 단계
그 스택크기가 1MB이고 이게 언제 결정되는지 설명해주실때 컴파일 단계라고 알려주셨는데 via 스레드 스택 챕터보면 링커가 스택크기를 exe파일이나 DLL파일의 pe헤더상에 추가한다고 하는데 그러면 링크단계에서 결정되는게 아닌지 궁금합니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
6:14
Call methods of Car class랑Call methods of ElectricCar Class랑 아래 출력값 왜 start 밑에 줄이 refuel이 나오나요? 앞에 부모 클래스에는 start->stop->refuel 순서대로 나오는데출력값은 start->refuel->stop으로 나오는데 왜그런지 궁금하네요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
8:54
8:54 초에 답 출력을 할 때요.상속이면 부모 먼저 출력한다고 해서Start Car created 까지 이해가 되는데왜 그다음이 Engine started가 아니고, electric car created 인지 이해가 안되네요.ㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
서브넷!!
안녕하세요 선생님!! 이번에 선생님 강의를 처음으로 듣고 2회차 때 꼭 합격하고 싶은데요.. 혹시 서브넷은 따로 강의 안하시나여? 서브넷은 공부를 안해도 되는건가여?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
47분33초
47분 33초에 sumDig(0)까지 해서 마지막 탈출까진 이해가 되는데, sumDig(1)는 1 + 0 = 1 을 반환합니다. ...sumDig(12345)는 5+10 = 15을 반환합니다결국 12345의 자리수 합은 15가 됩니다.이부분이 이해가 안됩니다 ㅠㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
9:45 부터 영상자막이랑 소리랑 싱크가 안 맞아요 ㅠㅠ
9:45 부터 영상자막이랑 소리랑 싱크가 안 맞아요 ㅠㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
25년 1회 문제풀이
혹시 25년 1회 문제풀이는 안해주시나요?
-
미해결문제로 배우는 C언어
i 값 초기화 질문
안녕하세요! 좋은 강의 늘 감사드립니다:) 다름이 아니오라, 22강 42초경에서 i의 값은 0으로 시작한다고 하셨는데, 그럼 코드 int i = 1; 에서 왜 1부터 시작하나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
함수와 재귀함수 v2
28:48 초swap 으로 함수 선언으로 하고 temp 에 a 주소의 값 203 대입 / a 주소에 b주소의 값 1004 대입 /다시 temp 를 b 주소 값을 대입 후 return 값을 다시 주지 않았는데 어떻게 두번 째 print 에서 바뀌어서 나올 수 가 있는거죠 ? return 값을 주지 않으면 void swap 내 블록에서 변경된 값은 그대로 종료되고 두번째 print는 첫번째 출력값 교환전: x=203, y=1004 랑 동일 하지 않나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
영상을 볼때 필기나 ide를 이용해서 코드를 직접 쳐서 돌려봐야 될까요?
아니면 그냥 영상만 보면서 공부할수있을까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
공부 순서를 어떻게 해야할까요?
공부 순서를 어떻게 해야할까요?보통 교재는 이론이 앞부분이고 프로그래밍이 뒷부분인데 시험 공부는 프로그래밍이랑 병행해라뭐 이런말을 들었는데, 공부 순서? 커리큘럼을 어떤식으로 가져가야할지 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
java:상속을 정리하는 문제 10개(유형5)
14:46구간입니다.설명해주신것 전부 이해가 되는데요만약 부모의 형태가 아니고 자식의 형태로 자식을 낳으면 각각 결과가 어떻게 되나요?child obj = new child()꼭 답변 부탁드립니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
35분경 빈칸채우기 문제 (선택정렬)
안녕하세요, PDF 자료상의 문제와 코드랑은 다르게, 아래와 같이 영상해설에서는 배열의 값이 주어져 있더라고요. 제가 알고리즘에 대한 이해도와 능력이 많이 부족합니다만,주어진 문제와 코드문만으로 풀이를 한다면, 어떻게 접근을 해야할까요? 감사합니다.