1. 포인터 배열은 무엇?

int *pt[5];
- 배열이다. 인자를 접근할 때 포인터를 쓴다는 것.

int num1 = 10;
int num2 = 20;
int num3 = 30;
int *pt[5] = {&num1, &num2, &num3};
printf("%d %d %d", *pt[0], *pt[1], *pt[2]); // 다른표현 **pt **(pt+1) **(pt+2)

// 출력 10 20 30

별로 유용한 것을 모르겠지만 여러 문자열을 배열 하나에 담을 수 있다는 장점이 있다.

char a[5] = "aaa";
char b[5] = "bbb";
char c[5] = "ccc";
char *pt[5] = {&a[0], &b[0], &c[0]};
printf("%s %s %s", pt[0], pt[1], pt[2]); // 다른 표현 *pt *(pt+1) *(pt+2)

// 출력 aaa bbb ccc

2. 배열 포인터는 무엇?

int (*pt2)[5];
- 포인터다. 2차원 배열의 포인터

int a[2][5] = {1,2,3,4,5,6,7,8,9,10};
int b[2][5] = {5,5,5,5,5,5,5,5,5,5};
int (*pt2)[5] = a; // 첫번째 배열 주소를 포인터로 지정해줌

for(i=0; i<2; i++){
for(j=0; j<5; j++){
printf("%d ", pt2[i][j]);
}}
pt2 = b; // 이젠 b 배열을 출력할 수 있다.

// 배열 포인터는 열(세로)로 접근하기 때문에 행(가로) 길이를 맞춰줘야한다.

'C' 카테고리의 다른 글

[C] 파일입출력 fgetc fgets  (0) 2019.12.03
[C] 파일입출력 fputc fputs  (0) 2019.12.03
[C] 이중 포인터  (0) 2019.12.03
[C] const의 사용방법  (0) 2019.12.03
[C] 배열과 포인터와의 관계  (0) 2019.12.03
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,