int main(void) {
int a[][3] = { 4, 5, 6, 1, 2, 3, 7, 8, 9 };
printf("%d\t,%d ,%d\n", a, &a, &a[0][0]);
printf("%d\t,%d \n", a + 1, *(a + 1));
return 0;
}
여기서 출력하면
1831916, 1831916, 1831916
1831936, 1831936
이렇게 나오는데
1. a= a[0][0]의 주소인건 알겠습니다. 그런데 왜 &a의 값이 a와 같아요?
a값과 a의 주소가 같을수있어요?
2. a+1이 포인터 연산으로 인해 주소가 20증가해서 1831936인건 알겠는데
*(a+1)이렇게 하면 a+1의 주소가 가리키는 값 이니까 1나와야 되는거 아니에요? 왜 주소가 나오나요?
1 배열 이름은 배열 첫 요소 주소야
%dt는뭐냐
\ <--- 이거 복붙 안된듯
2. *(a+1) = a[0]
탭표시 복붙 안된듯 하네용
아 잘못쳤다 a[1] 임
a[1] 하고 a[1][0] 은 다른거야
a를 더블포인터라고 생각할수도 있음
머야... 연산이 내가 잘못계산한게 아닌데? 머지 했네 실행시키고 출력해본거 맞음? 20이 아니라 12가 맞는데?
최하단위가 3인데 20을 3으로 쪼개면 정수가 나올 수 없자나?