본문 바로가기
C 언어

c 언어[028] 배열(array)과 포인터( pointer)- 포인터 배열

by Smart Factory in 2020 2021. 10. 7.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
c 언어[028] 배열(array)과 포인터( pointer)- 포인터 배열에 대해 알아보겠습니다. 

1. 포인터 배열

가. 포인터 배열
-  포인터들이 배열형태로 주소값을 가지는 것

 

배열  arr의 원소를 각각 출력해 보고 그 값들을 포인터 배열로 만들어 보았습니다. 

ptr[i]=&arr[i];
ptr[i] 번째는 &arr[i] 로 동일한 인덱스에 있는 값을 가리키도록 하였습니다. 

for (int i = 0; i < sizeof(ptr) / sizeof(int); i++) {
printf("*ptr[%d} 는%d\n",i,*ptr[i]);

그럼 다음에  * ptr[5]값을 출력해 보았습니다. 

arr[5]값을 그대로 포인터 배열로 *ptr[5]로 만들어진것을 알 수 있습니다. 

어디까지나 포인터는 주소값을 가지고 있는 것이기 때문에 배열 값을 변경하면 포인터가 가리키는 값도 변경됩니다.  

#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
int* ptr[5];
for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
ptr[i]=&arr[i];
}

for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d} 는 %d\n",i,arr[i]);
}
printf("\n");
for (int i = 0; i < sizeof(ptr) / sizeof(int); i++) {
printf("*ptr[%d} 는%d\n",i,*ptr[i]);
}

}

 

포인터 배열 *ptr 의 주소값을 arr로 지정한 다음

arr[1] =200; 
*ptr[4] =500;

배열에서 값을 변경하고 포인터에서 값을 변경해 보았습니다. 

변경된 값으로 나오는 것을 볼 수 있습니다. 

#include<stdio.h>
int main() {
int arr[5] = { 10,20,30,40,50 };
int* ptr[5];
for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
ptr[i]=&arr[i];
}

for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
printf("arr[%d} 는 %d\n",i,arr[i]);
}
printf("\n");
for (int i = 0; i < sizeof(ptr) / sizeof(int); i++) {
printf("*ptr[%d} 는%d\n",i,*ptr[i]);
}
printf("\n");
arr[1] =200; 
*ptr[4] =500;

for (int i = 0; i < sizeof(ptr) / sizeof(int); i++) {
printf("*ptr[%d} 는%d\n", i, *ptr[i]);
}

}

 

728x90
반응형

댓글