SH1R0_HACKER

C언어 :: 포인터 정리 (5) - 포인터 배열 본문

Programming Language/C

C언어 :: 포인터 정리 (5) - 포인터 배열

SH1R0_HACKER 2021. 1. 17. 14:37
// 포인터 정리(5)
// 포인터 배열

#include <stdio.h>

void example1() {
	int arr[3] = { 1, 2, 3 };
	int(*ptr_arr)[3] = &arr; // 배열 포인터 선언
	int* ptr[3] = { &arr[0], &arr[1], &arr[2] }; // 포인터 배열 선언
	for (int i = 0; i < 3; i++) { // 배열 출력
		printf("arr[%d] = %d\n",i, arr[i]);
	}
	printf("\n");
	for (int i = 0; i < 3; i++) { // 배열 포인터 출력
		printf("(*ptr_arr)[%d] = %d\n",i, (*ptr_arr)[i]);
	}
	printf("\n");
	for (int i = 0; i < 3; i++) { // 포인터 배열 출력
		printf("ptr[%d] : %d\n",i ,*ptr[i]);
	}
}

void example2() {
	char str[] = "Apple";
	printf("%s\n\n", str); // Apple 출력, %s는 널문자 '\0'를 만날때까지 출력

	char strings[3][10] = {
		"Hello",
		"World!",
		"C++"
	};
	// 출력 : strings[i][0] ~ strings[i][널문자]
	for (int i = 0; i < 3; i++) {
		printf("%s ", strings[i]);	// strings[i] == &strings[i][0]
	}
	printf("\n\n");
	
	char* p_str[3];
	for (int i = 0; i < 3; i++) {
		p_str[i] = strings[i];
		printf("%s ", p_str[i]); // Hello World! C++
	}
	printf("\n\n");
}

int main(void) {
	printf("예제 1번\n");
	example1();
	printf("\n");
	printf("예제 2번\n");
	example2();
	printf("\n");
}