c언어 - 포인터, 배열 pointer, array

배열은 주솟값이기 때문에 포인터에 넣을 수 있다.

자료형이 같아야 함
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= { 112233445566778899110 };    // 크기가 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차원 배열
1
2
3
4
5
6
7
int numArr[3][4= {    // 세로 3, 가로 4 크기의 int형 2차원 배열 선언
    { 11223344 },
    { 55667788 },
    { 99110121132 }
};
 
int (*numPtr)[4= numArr;
cs

출처 : c언어 코딩도장

댓글