상세 컨텐츠

본문 제목

[C언어]포인터 배열(Pointer Array)

Language/C

by Computer_x86_64 2022. 3. 1. 10:51

본문

Array Pointer (배열 포인터)

 

배열은 한가지 데이터 타입을 연속적으로 담는 변수다.

그렇다면 포인터 배열은 어떻게 사용하는지 확인해보자.

#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]으로 이동하게 된다. 

그리고 값을 변경하는 것이다.

 

'Language > C' 카테고리의 다른 글

[C언어]함수포인터(Function Pointer).  (0) 2022.02.27
[C]포인터(pointer)  (0) 2022.02.24

관련글 더보기

댓글 영역