1.
#include <stdio.h>
int main() {
int arr[2][3] = { {1, 2, 3}, {4, 5, 6}}
printf("%d\n", sizeof(arr)); // 24
printf("%d\n", sizeof(arr[0])); // 12
printf("%d\n", sizeof(arr[0][0])); // 4
}
sizeof(arr) - 배열 전체의 크기
sizeof(arr[0]) - 첫번째 행의 크기
sizeof(arr[0][0]) - 1행 1열의 크기
2.
/*
1. ptr == &ptr[0]
2. *ptr == ptr[0]
3. ptr + 1 == ptr에 sizeof(*ptr)을 더한값
*/
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
// 1. ptr[i] == arr[i]
// 2. ptr[i][j] == arr[i][j]
// 3. ptr == arr
int(*ptr)[3] = arr; // 3의 길이를 가지는 일차원 배열을 가지고 있다.
// ptr은 행 전체를 가리키는 포인터이고, ptr에 1을 더할 때마다 그 다음 행을 가리킨다고 이해해도 된다.
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", ptr[i][j]);
}
printf("\n");
}
}
ptr = arr 이라는 건 ptr = &arr[0] 과 같다.
'Programming > C' 카테고리의 다른 글
prototype (0) | 2020.02.18 |
---|---|
포인터 배열 정리 (0) | 2020.02.18 |
배열과 포인터 정리 2 (0) | 2020.02.14 |
배열과 포인터 정리 1 (0) | 2020.02.14 |