배열은 한가지 데이터 타입을 연속적으로 담는 변수다.
그렇다면 포인터 배열은 어떻게 사용하는지 확인해보자.
#include <stdio.h>
int main() {
int array[5] = { 11,22,33,44,55 };
int* pa;
//배열이름은 주소이기떄문에 &를 붙이지 않는다.
pa = array;
for (int i = 0; i < 5; i++) {
printf("array[%d] : value = \" %d \" \n", i, array[i]);
}
printf("array address : %p\n", array); //0x7fffffffe960
printf("pa value : %p\n", pa); //0x7fffffffe960
printf("pa address : %p\n", &pa); //0x7fffffffe958
printf("array[0] address : %p \n", &array[0]); //0x7fffffffe960
printf("array[1] address : %p \n", &array[1]); //0x7fffffffe964
printf("array[2] address : %p \n", &array[2]); //0x7fffffffe968
*(pa + 3) = 99;
for (int i = 0; i < 5; i++) {
printf("array[%d] : value = \" %d \" \n", i, array[i]);
}
return 0;
}
result >
array[0] : value = " 11 "
array[1] : value = " 22 "
array[2] : value = " 33 "
array[3] : value = " 44 "
array[4] : value = " 55 "
array address : 0x7fffffffe960
pa value : 0x7fffffffe960
pa address : 0x7fffffffe958
array[0] address : 0x7fffffffe960
array[1] address : 0x7fffffffe964
array[2] address : 0x7fffffffe968
array[0] : value = " 11 "
array[1] : value = " 22 "
array[2] : value = " 33 "
array[3] : value = " 99 "
array[4] : value = " 55 "
int형 배열이기 때문에 4byte증가한다.
그리고 주소는 연속적으로 차지하게 된다.
*(pa + 3) =99;
위 코드를 실행하면 포인터는 int type 데이터를 4byte씩 3칸 이동해
array[3]으로 이동하게 된다.
그리고 값을 변경하는 것이다.
[C언어]함수포인터(Function Pointer). (0) | 2022.02.27 |
---|---|
[C]포인터(pointer) (0) | 2022.02.24 |
댓글 영역