C언어 do it을 푸는 도중, ㄹㅇ 겁나귀찬ㅇ흔 문제 하나를 발견했다.
그런데 의문 점.
char name[3][16];
int i;
for (i = 0 ; i < 3 ; i++) {
scanf("%s", name[i]);
}
여기에서,
첫번째, scanf는 뒤에 넣고싶은 내용을 쓸 때 &name[i] 이렇게 쓰는걸로 알고 있었는데, 왜 &가 없어도 되는가
두번째, name[3][16]은 2차원 배열인데, 왜 name[i]로 해도 돌아가는가?
의문이다.
답을 해결하면, 다시 돌아오겠다..
------ 10월 1일 ------
이제야 돌아왔다. 사실 답은 이미 알아냈었지만, 오기 귀찮다고 아 ㅋㅋ
우선 알아둬야 할게, "scanf"함수로 문자열을 입력 받으려면 "char 형"을 저장할 수 있는 메모리의 주소를 주ㅓ야한다. 그리고 배열은 수식에서 첫번째 요소의 주소로 변환되어서, &를 굳이 안붙혀도 char가 저장된 주소로 알아서 변환된다.
그리고 name[i]. 이 배열은 char 형 데이터를 16개 넣을 수 있는 배열이다.
만약 내가 name[i]라고 받으면, &name[i][0]과 같은 표현이 된다. 그래서 그냥 &를 안붙여도 scanf에 쓸 수 있고, 알아서 2차원 배열로 인식을 하는 것이다.