inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

6.17 for 루프를 배열과 함께 사용하기

마지막 예제 질문있습니다!!

232

이성주

작성한 질문수 3

0

안녕하세요 홍정모 교수님!!

질문이 있어서 여쭤봅니다.

#define SIZE 5

int main()

{

int my_arr[SIZE];

int sum = 0;

printf("Enter 5 numbers : ");

for (int i = 0; i < SIZE; ++i)

{

scanf("%d", &my_arr[i]);

sum += my_arr[i];

}

printf("Sum = %d", sum);

return 0;

}

제가 구현한 코드입니다. 불드친 부분을 제가 my_arr 로 했을때는 sum의 값이 이상하게 출력이 되는데, 그 이유를 알고 싶습니다!! 강의에서는 &my_arr[i]와 my_arr를 같이 써도 무방하다고 하셨다고 제가 이해를 했습니다만, 어디가 어떻게 잘못되었는지 궁금합니다.

항상 좋은 강의 감사드립니다.

c

답변 2

2

안소

안녕하세요.

우선 이 답변은 아마 질문자님께서 포인터와 배열의 관계에 대해서 배우시고 나서야 이해가 가실 것 같습니다. 그래서 만약 제 답변이 이해가 되지 않으시다면 나중에 포인터까지 공부 하시고 다시 보시면 됩니다! 

 &my_arr[i]와 my_arr 가 같은 것이라기보단 my_arr 와 값이 같은 것은 &my_arr[0] 입니다. 배열의 이름(my_arr)은 배열의 첫번쨰 원소의 주소가 담겨져 있는 포인터와 같은 역할을 하기 떄문입니다. (아마 포인터 모르시면 제가 말씀드리는 이 부분이 이해가 잘 안되실텐데 나중에 포인터 공부하시면 이해되실거에요!) 

그리고 배열의 모든 원소들을 입력하려고 하시는건데 &my_arr[i] 가 아닌 그냥 my_arr 이라고 하시면 for문의 i++ 을 영향을 못 받습니다. i는 0부터 SIZE -1 까지 증가 되면서 my_arr[0], my_arr[1] ... 이렇게 모든 원소에 입력을 할 수 있게 되는건데 그냥 my_arr 로만 적으시면 for문 도는 동안 원소들이 아닌 my_arr 에만 고정적으로 입력받겠다고 하시는거라 모든 원소들이 아닌 for문 도는 내내 my_arr[0] 첫번째 원소에만 입력을 받는 꼴이 됩니다. 

따라서 질문자님께서 scanf("%d", my_arr);라고 하셨다면 이는 for문 도는 동안 내내 첫 번째 원소에만 입력을 받으신 셈이 됩니다. 따라서 첫번쨰 원소를 제외한 나머지 원소들은 입력이 되지 못해 쓰레기 값으로 남아있고 이 쓰레기값들과 합산을 하였기 때문에 이상한 값이 나온 것입니다.  

for문을 모두 실행 완료한 후 빠져나왔을 떄 모습입니다. 이렇게 첫번째 원소만 입력 된 것을 확인하실 수 있습니다.

0

이성주

감사합니다!!!!!!!

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

1

50

3

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

1

54

2

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

1

53

2

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

1

46

1

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

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

136

2

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

1

59

2

getchar(), putchar()

1

92

3

강의자리ㅛ

1

78

2

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

1

112

2

소스파일안에 여러 파일

1

75

2

F5와 F7의 차이

1

75

2

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

1

58

2

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

1

68

1

Step over 기능 문의

1

52

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

64

2

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

1

53

2

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

1

53

2

11.5 코드 구현

1

67

2