inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

14.22 포인터에 대한 질문

미해결

홍정모의 따라하며 배우는 C언어

안녕하세요, 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)에서 값을 바꾸려는 시도 때문에 에러가 나는 것이 맞나요? 감사합니다.

  • c
  • 포인터
새싹비빔밥 댓글 1 좋아요 1 조회수 108

11:29 C언어 문제

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

gets(n)이 n을 입력받는 함수라는 거 이해했고, 근데 name() 에 ()가 있어서 () 에 홍길동을 입력받는건가요? name이 똑같이 n에다가 덮어쓴다는게 뭘 보고 알 수 있는건가요?

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 111

28분 23년1회 java문제 다시

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

설명을 들어서 a=10 static.b = a 니까 static.b++의 출력값은 10이고, 이후 11이 된다고 이해를 했는데, 그러면 그 아래 출력값 a가 10 이면 그대로 똑같이 10이 아니라 왜 st.a는 class Static의 20을 가져오나요? 두번째 출력값은 바로 위 출력값에서 계산된 걸 가져왔는데 네번째 출력값은 왜 가장 위의 클래스 거를 가지고 오는지 개념이 이해가 안됩니다

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 1 조회수 91

28분 문제..

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

28분대에 있는 23년 1회 JAVA 문제인데요. 출력값 처음에 Static.b++는 a=10 static.b=a 때문에 출력값 10인 건 이해가 되고, st.b는 왜 0이 아니고, 11인지 이해가 안되고.. 마지막 출력값 st.a은 왜 10이 아니고 20인지 이해가 안되네요. 기출문제부터 따라가기 너무 힘든데 이거 강의를 다시 들어야하나요? 혼자서 문제를 풀면 문제 설명하는 흐름대로 생각이 잘 안나는 것 같아요

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 83

13:40 di가 ..

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

질문이 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승 이렇게 커지지 않으니까 계산이 안되는 것 같은데 ㅠ.. 좀 어렵네요

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 84

getchar()함수의 반환형에 대해 질문드립니다.

해결됨

독하게 시작하는 C 프로그래밍

안녕하세요. 공부할 때 chat gpt를 자주 활용하고 있습니다. chat gpt에 따르면 getchar()함수를 반환하려면 char a; a = getchar(); 가 아니라 int a; a = getchar(); int형으로 반환을 받아야한다고 하더라구요. EOF를 구분하기 위해서라는데... 그런데 예제들을 보면 char형으로 받는 예제들도 많아서 질문드립니다. 감사합니다.

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
kdy4071 댓글 2 좋아요 0 조회수 136

6:45 생성자가 있는지 없는지

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

유형2의 문제인데요. 생성자가 있는지 없는지 판단하는걸 어떻게 하는거죠? class가 있으면 생성자가 있는 거 아닌가요 ㅠ?

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 59

스택 크기 결정 단계

해결됨

Windows 시스템 프로그래밍 - 기본

그 스택크기가 1MB이고 이게 언제 결정되는지 설명해주실때 컴파일 단계라고 알려주셨는데 via 스레드 스택 챕터보면 링커가 스택크기를 exe파일이나 DLL파일의 pe헤더상에 추가한다고 하는데 그러면 링크단계에서 결정되는게 아닌지 궁금합니다

  • c
  • system-programming
  • vc++
LoDf 댓글 2 좋아요 0 조회수 101

6:14

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

Call methods of Car class랑 Call methods of ElectricCar Class랑 아래 출력값 왜 start 밑에 줄이 refuel이 나오나요? 앞에 부모 클래스에는 start->stop->refuel 순서대로 나오는데 출력값은 start->refuel->stop으로 나오는데 왜그런지 궁금하네요

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 57

8:54

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

8:54 초에 답 출력을 할 때요. 상속이면 부모 먼저 출력한다고 해서 Start Car created 까지 이해가 되는데 왜 그다음이 Engine started가 아니고, electric car created 인지 이해가 안되네요.ㅠ

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 68

서브넷!!

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요 선생님!! 이번에 선생님 강의를 처음으로 듣고 2회차 때 꼭 합격하고 싶은데요.. 혹시 서브넷은 따로 강의 안하시나여? 서브넷은 공부를 안해도 되는건가여?

  • python
  • java
  • c
  • 정보처리기사
최태준 댓글 2 좋아요 0 조회수 73

47분33초

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

47분 33초에 sumDig(0)까지 해서 마지막 탈출까진 이해가 되는데, sumDig(1)는 1 + 0 = 1 을 반환합니다 . . . . sumDig(12345)는 5+10 = 15을 반환합니다 결국 12345의 자리수 합은 15가 됩니다. 이부분이 이해가 안됩니다 ㅠㅠ

  • python
  • java
  • c
  • 정보처리기사
snow4532 댓글 2 좋아요 0 조회수 74

25년 1회 문제풀이

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

혹시 25년 1회 문제풀이는 안해주시나요?

  • python
  • java
  • c
  • 정보처리기사
melon2641 댓글 2 좋아요 0 조회수 102

i 값 초기화 질문

미해결

문제로 배우는 C언어

안녕하세요! 좋은 강의 늘 감사드립니다:) 다름이 아니오라, 22강 42초경에서 i의 값은 0으로 시작한다고 하셨는데, 그럼 코드 int i = 1; 에서 왜 1부터 시작하나요?

  • c
winwin 댓글 2 좋아요 0 조회수 100

함수와 재귀함수 v2

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

28:48 초 swap 으로 함수 선언으로 하고 temp 에 a 주소의 값 203 대입 / a 주소에 b주소의 값 1004 대입 /다시 temp 를 b 주소 값을 대입 후 return 값을 다시 주지 않았는데 어떻게 두번 째 print 에서 바뀌어서 나올 수 가 있는거죠 ? return 값을 주지 않으면 void swap 내 블록에서 변경된 값은 그대로 종료되고 두번째 print는 첫번째 출력값 교환전: x=203, y=1004 랑 동일 하지 않나요?

  • python
  • java
  • c
  • 정보처리기사
김성태 댓글 2 좋아요 0 조회수 61

공부 순서를 어떻게 해야할까요?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

공부 순서를 어떻게 해야할까요? 보통 교재는 이론이 앞부분이고 프로그래밍이 뒷부분인데 시험 공부는 프로그래밍이랑 병행해라 뭐 이런말을 들었는데, 공부 순서? 커리큘럼을 어떤식으로 가져가야할지 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
jin 댓글 1 좋아요 0 조회수 263

java:상속을 정리하는 문제 10개(유형5)

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

14:46구간입니다. 설명해주신것 전부 이해가 되는데요 만약 부모의 형태가 아니고 자식의 형태로 자식을 낳으면 각각 결과가 어떻게 되나요? child obj = new child() 꼭 답변 부탁드립니다

  • python
  • java
  • c
  • 정보처리기사
고은채 댓글 2 좋아요 0 조회수 222

35분경 빈칸채우기 문제 (선택정렬)

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요, PDF 자료상의 문제와 코드랑은 다르게, 아래와 같이 영상해설에서는 배열의 값이 주어져 있더라고요. 제가 알고리즘에 대한 이해도와 능력이 많이 부족합니다만, 주어진 문제와 코드문만으로 풀이를 한다면, 어떻게 접근을 해야할까요? 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
Hu Young Lee 댓글 2 좋아요 0 조회수 112

인기 태그

인프런 TOP Writers

주간 인기글