inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

11.11 문자열을 숫자로 바꾸는 방법들

저도 6분 30초경 &end가 이해가 잘 안되요

해결된 질문

277

용개형멋져

작성한 질문수 37

2

함수가 작동하는 구조가 이게 맞는지 궁금합니다.

매개변수로 이중 포인터를 집어넣으면 이중 포인터가 가리키는 포인터의 메모리 공간에

변환할 수 없는 문자의 공간의 주소를 대입해주는 게 맞나요?

이게 맞다면 굳이 그냥 포인터에 주소를 대입해 주는 게 아니라

이중 포인터를 매개변수로 이중 포인터가 가리키는 포인터에 주소를 대입해주는 이유가 뭔가요?

c

답변 1

2

Soobak

안녕하세요, 질문&답변 도우미 Soobak 입니다.


네, 말씀하신 내용이 맞습니다.
이유는 strtol() 함수가 호출된 이후에도 end 포인터가 기리키는 위치를 알 수 있도록 하기 위함입니다.
간단히 예를 들어, char 자료형의 변수의 값을 함수 내부에서 변경하기 위해 char* 포인터를 사용하였던 것 처럼, char* 자료형의 포인터의 값을 변경하기 위해서 char** 이중 포인터를 사용하는 것입니다.

즉, 함수 내부에서 포인터의 값을 변경하기 위해 포인터의 주소(포인터가 가리키는 주소가 아닌, 포인터 변수의 주소)를 전달하는 것입니다.

1

용개형멋져

아 그러니깐 그냥 end를 넘겨주면 포인터 변수의 주소가 아니라 포인터가 가리키는 주소를 넘겨주게 되서 포인터 변수의 값을 바꾸는 게 불가능해지기 때문에 &end를 넘겨주는 거라고 생각해도 될까요? 답변 정말 감사합니다

1

Soobak

네, 조금 더 정확하게는 '복사' 된 포인터의 주소를 넘겨주게 되면, 변경된 값이 함수의 지역 밖에서 반영되지 않기 때문입니다.

따라서, 변수의 값을 함수 내부에서 변경해주기 위해 변수의 주소를 인수로 전달하는 과정처럼,
함수의 인수로 포인터의 '주소'를 넘겨주는 것입니다.

Export template 안됨

1

19

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

54

3

main 함수에서 왜 int만 선언이 되는걸까요

1

56

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

54

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

61

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

80

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

113

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

76

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

69

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

65

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2