scanf 함수에서 %s 서식으로 받을 때!


 


char arr[100]="hello! scanf";


1번 scanf("%s",&arr);

2번 scanf("%s",arr);


무엇이 맞다고 생각하시나요???


열혈강의 윤성우 저자의 책 2007년 이전의 책에는 &를 붙이지 않는 것이 맞다고 하는데...

제가 실수로 넣고 실행을 했더니 멀쩡히 실행이 되더군요.. 컴파일러가 알아서 수정을 해준 것인지 

아니면 문법 표준이 바뀌어서 그런 것인지 궁금합니다...


물론 scanf 의 인자 전달로는 arr배열의 내용이 변경되어야 하기 때문에 call-by-reference방식으로(call-by-pointer) 

전달되어야 하기 때문에 배열이름인 arr 이 오는 것이 맞다고 생각했지만.... 

또 생각해보니


arr 또한 역시 배열의 첫 번째 요소의 주소값을 나타내고,

&arr 은 arr배열의 주소 값 , 역시 첫 요소의 주소값을 나타내더라구요....


무엇이 맞는걸까요??? 혹시 제가 무슨 오류를 범하고 있는지.. 지적부탁드립니다!!!!


감사합니다~


아래 그림은 소스와 실행파일입니다..


실행환경은 맥os vim, gcc 컴파일러입니다!!!!!!