inflearn logo
강의

Course

Instructor

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

6.17 Using for loops with arrays

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

233

sungjoo10131754

3 asked

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

Answer 2

2

sohyun

안녕하세요.

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

 &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

sungjoo10131754

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

Export template 안됨

1

45

2

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

1

70

3

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

1

63

2

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

1

62

2

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

1

58

1

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

1

81

2

12.12 헤더 관련 질문

1

63

2

Visual Studio Community 2026 사용 문의

1

149

2

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

1

65

2

getchar(), putchar()

1

96

3

강의자리ㅛ

1

85

2

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

1

119

2

소스파일안에 여러 파일

1

80

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

71

2

13.4 words[0]

0

64

2

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

1

66

2

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

1

67

2

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

1

57

2

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

1

56

2