inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

9.1 함수가 필요할 때

9.1 명함예제 함수에 넣은 배열 값이 이상합니다

335

Moter

작성한 질문수 1

0

안녕하세요. 9.1명함 예제를 푸는 도중 char 배열에 관해 문제가 생겨 질문 드립니다.

아래에 질문 사항 있습니다.

별 20개와 글자를 각각 char array에 넣었고 space를 추가하는 내용을 함수로 만들었습니다.

그 후 space의 개수를 세기 위해 별 20개를 넣은 배열의 개수를 세어 봤습니다.

배열의 개수를 세는 방법은 강의를 보기 전인지라 sizeof 함수를 사용했습니다.

Main에서는 sizeof가 20을 반환하며 배열을 잘 읽었습니다.

sizeof는 바이트를 세는 것이니 char 20개인 배열은 sizeof가 20을 반환하는 것이 맞을 테니까요.

그런데 문제는 space를 추가하는 함수에서 발생했는데 해당 함수에서 배열을 읽을 때에는 sizeof가 4를 반환해 버린 것입니다.

space 추가하는 함수는 배열의 주소를 매개변수로 받았습니다. (char star[20]에서 star만 입력했습니다.)

해당 현상을 보면서 오만 생각이 다 들었는데 그 중 가장 합리적인 것 같은 생각은

'space 추가 함수가 배열을 읽어올 때 배열 주소 값만 읽어서 sizeof가 int를 읽은게 아닐까?' 였습니다.

int는 4바이트 이니까 그래서 4를 반환한게 아닐까 싶지만 확신을 가지진 못했습니다.

아무리 생각해도 정확한 해답을 얻을 수 없어서 질문 남깁니다.

질문 사항은 아래와 같습니다.

  1. main 함수와 추가한 함수에서 배열의 크기 값이 다른 이유는 무엇일까요?

  2. 추가한 함수에서 올바른 배열의 크기를 읽으려면 어떻게 해야 하나요?

  3. 해당 상황에서 sizeof가 4를 읽어온 이유가 무엇일까요?

- star 배열에 20개의 별을 넣은 코드

- star 배열을 함수에 입력한 방식

- space를 추가하는 함수. int a, b, c는 배열 값이 이상하게 들어가는 걸 확인해 보려고 작성한 코드입니다.

긴 글 읽어주셔서 감사합니다.

도움 주시면 감사하겠습니다 ㅠㅠ

c

답변 1

0

강민철

혹시 전체 소스코드를 첨부해주시겠어요?

그리고 말씀하신 점을 미루어보았을 때

'space 추가 함수가 배열을 읽어올 때 배열 주소 값만 읽어서 sizeof가 int를 읽은게 아닐까?'

라는 생각이 맞는 듯 합니다.

Export template 안됨

1

45

2

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

1

71

3

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

1

63

2

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

1

62

2

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

1

59

1

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

1

81

2

12.12 헤더 관련 질문

1

64

2

Visual Studio Community 2026 사용 문의

1

150

2

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

1

65

2

getchar(), putchar()

1

97

3

강의자리ㅛ

1

86

2

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

1

119

2

소스파일안에 여러 파일

1

81

2

F5와 F7의 차이

1

82

2

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

1

63

2

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

1

73

1

Step over 기능 문의

1

57

2

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

1

81

2

int main 함수 관련 오류 문의

1

72

2

13.4 words[0]

0

64

2

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

1

66

2

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

1

68

2

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

1

57

2

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

1

56

2