Small Grey Outline Pointer 포인터 배열과 배열 포인터
본문 바로가기
Dev./C++

포인터 배열과 배열 포인터

by sso. 2022. 3. 27.

포인터 배열과 배열 포인터




포인터 "배열"

-정수형 배열: 정수형 변수들을 묶어놓은 묶음
-실수형 배열: 실수형 변수들을 묶어놓은 묶음


배열 "포인터"
-정수형 포인터: 정수형 변수의 주소를 저장하는 포인터
-실수형 포인터: 실수형 변수의 주소를 저장하는 포인터



<포인터 배열의 생성 방법>
자료형*포인터 배열명[크기];

<포인터 정수형 배열의 생성 방법>
int * score[3];

 


<배열 포인터의 생성 방법>

자료형(*배열포인터명)[크기];

<정수형 배열 포인터의 생성 방법>
int (*score)[3];

 

 

 

#include <stdio.h>

void main() {
	int a = 10, b = 20, c = 30;
	int* ar[3];
	ar[0] = &a;
	ar[1] = &b;
	ar[2] = &c;

	for (int i = 0; i < 3; i++) {
		printf("ar[%d]: %d\n", i, *ar[i]);
	}
	*ar[0] = 100;
	printf("a: %d\n", a);

}

<결과>

ar[0]: 10
ar[1]: 20
ar[2]: 30
a: 100

 

*ar[0] = 100; => *ar[0]의 주소로 접근하여 a의 값을 변경시킴

 

 

 


문자열의 포인터배열

#include <stdio.h>

void main() {

	char* name[5] = { "메모리", "CPU", "모니터", "메인보드", "하드디스크"};
	int code_number;
	printf("Code Number: ");
	scanf_s("%d", &code_number);

	if ((code_number >= 0) && (code_number <= 4)) {
		printf("제품명: %s\n", name[code_number]);
	}

	else {
		printf("제품 코드 입력 오류!");
	}


}

<결과>

Code Number: 2
제품명: 모니터

 

Code Number: 6
제품 코드 입력 오류!

 

하나의 "문자열"은 char*(문자형포인터)로 저장할 수 있다!

 

 


#include <stdio.h>

void main() {

	int i, j;
	int num1 = 10, num2 = 20, num3 = 30, num4 = 30;
	//정수형 변수
	int arr[2][2] = 
	{ 
		{1,2},
		{3,4} 
	};
	int* ptr_num[4] = {&num1, &num2, &num3, &num4}; //포인터배열 
    //정수형 변수의 주소를 저장하는 각각의 정수형 포인터의 요소로 이루어진 정수형 포인터 배열
	int(*ptr_arr)[2] = arr; //arr==&arr[0] 배열 포인터
	for (i = 0; i < 4; i++) {
		printf("%d ", *ptr_num[i]);
	}
	printf("\n");
	for (i = 0; i < 2; i++) {
		for (j = 0; j < 2; j++) {
			printf("%d ", ptr_arr[i][j]);
		}
		printf("\n");
	}



}

 

<결과>

10 20 30 30
1 2
3 4

 

arr==&arr[0]

arr[0]={1,2} =>하나의 배열을 뜻한다 (크기가 2인 정수형의 값을 묶어놓은 배열)

 

 

int* ptr_num[4] = {&num1, &num2, &num3, &num4}; //포인터배열 

각각의 요소가 포인터로 이루어져 있는 배열이다


int(*ptr_arr)[2] = arr; //arr==&arr[0] 배열 포인터

배열의 주소를 저장하는 포인터

728x90

댓글