// 포인터 정리(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");
}