배열은 주솟값이기 때문에 포인터에 넣을 수 있다.
자료형이 같아야 함
1차원 배열이라면 단일 포인터
2차원 배열이라면
자료형 (*포인터이름)[가로크기]
자료형이 같아야 함
1차원 배열이라면 단일 포인터
2차원 배열이라면
자료형 (*포인터이름)[가로크기]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <stdio.h>
int main()
{
int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 크기가 10인 int형 배열
int *numPtr = numArr; // 포인터에 int형 배열을 할당
printf("%d\n", *numPtr); // 11: 배열의 주소가 들어있는 포인터를 역참조하면 배열의
// 첫 번째 요소에 접근
printf("%d\n", *numArr); // 11: 배열 자체를 역참조해도 배열의 첫 번째 요소에 접근
printf("%d\n", numPtr[5]); // 66: 배열의 주소가 들어있는 포인터는 인덱스로 접근할 수 있음
printf("%d\n", sizeof(numArr)); // 40: sizeof로 배열의 크기를 구하면 배열이 메모리에
// 차지하는 공간이 출력됨
printf("%d\n", sizeof(numPtr)); // 4 : sizeof로 배열의 주소가 들어있는 포인터의 크기를
// 구하면 포인터의 크기가 출력됨(64비트라면 8)
return 0;
}
| cs |
실행결과
11
11
66
40
4
2차원 배열
출처 : c언어 코딩도장
2차원 배열
1
2
3
4
5
6
7
|
int numArr[3][4] = { // 세로 3, 가로 4 크기의 int형 2차원 배열 선언
{ 11, 22, 33, 44 },
{ 55, 66, 77, 88 },
{ 99, 110, 121, 132 }
};
int (*numPtr)[4] = numArr;
| cs |
출처 : c언어 코딩도장
댓글
댓글 쓰기