inflearn logo
강의

Course

Instructor

Hong Jung-mo's C Programming: Learning by Doing

11.11 How to convert strings to numbers

안녕하세요 교수님 end의 이중포인터 부분이 잘 이해가 가지않습니다

463

wldnjs2110

11 asked

0

본 강의 6분 30추 쯤 나오는 

end가 strtol 함수 내에서 &end로 이중 포인터가 되는지 이해가 가지않습니다

c

Answer 4

2

hodu

안녕하세요?

덕분에 저도 복습을 했네요.

함수가 return을 하나만 할 수 있어서, 포인터를 이용해서 여러개를 리턴하는 효과?를 간접적으로 구현할 수 있는 걸로 알고있어요.

강의 [06:06]를 보시면 

str~~함수들의 특징은 '끝을 표현하는 문자 포인터 변수를 하나 더 넣어주고 있어요' 이런 설명이 있는데요. 

strtol 안에서 한글자 한글자 변환을 하다가 변환을 할 수 없는 것을 만나면 그 포인터를 여기에 넣어주는 거예요. 

--------------------------

함수의 리턴값은 하나 이기 때문에 함수 파라미터로 포인터를 이용해서 마치 반환값이 두 개 인것 처럼 작동하게 되는 거라고 생각해요. 그런데 그 반환할 값이 포인터 이기 때문에  이중포인터를 사용하고 있는거죠.

strtol : https://www.tutorialspoint.com/c_standard_library/c_function_strtol.htm

감사합니다.

1

hodu

안녕하세요?

아래 코드를 한 번 실행해보세요. 작동하는 코드입니다.

<코드>

#include <stdio.h>

void sum_diff(int aint bint *sumint * diff);

int main()
{
    int a = 2;
    int b = 7;

    int sum = 0;    // 값을 받고 싶은 변수
    int diff = 0;  // 값을 받고 싶은 변수

    printf("sum : %d, diff : %d\n", sum, diff);// sum_diff 함수 호출전
    sum_diff(a, b, &sum, &diff);
    printf("sum_diff 호출 후  ======== \n\n");
    printf("sum : %d, diff : %d\n", sum, diff);// sum_diff 함수 호출후


    return 0;
}

void sum_diff(int aint bint *sumint * diff)
{
    *sum = a + b;
    *diff = a > b ? (a - b): (b - a);
}

아래 문제를 보시면 sum, diff변수에 각각 저장하는 함수다라고 쓰여있죠?

이 함수의 return type은 void인데 어떻게 저장을 할까요?

바로 포인터를 보내서 변수에 직접 접근할 수 있게 하는 겁니다.

이해에 도움이 되었으면 좋겠네요.

감사합니다.

1

wldnjs2110

제가 아직 포인터에 대한 기본 개념이 부족해서인지 아직 완전히 이해가 되지않네요 

"함수 파라미터로 포인터를 이용해서 마치 반환값이 두 개 인것 처럼 작동하게 된다"는 부분이 이해가 안가는데 이 부분 혹시 더 자세히 설명 해주실 수 있으실까요? 

0

wldnjs2110

아 감사합니다 이제야 이해 했습니다 보이드 함수의 경우 리턴을 못하여 포인터 주소값을 가르켜 그 값을 읽어오는 형태이군요 잘 배웠습니다!

Export template 안됨

1

27

2

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

1

56

3

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

1

57

2

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

1

55

2

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

1

49

1

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

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

138

2

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

1

61

2

getchar(), putchar()

1

94

3

강의자리ㅛ

1

80

2

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

1

114

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

79

2

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

1

59

2

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

1

70

1

Step over 기능 문의

1

53

2

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

1

76

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

61

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

54

2