포인터와 배열은 매우 연관
배열의 이름 without 변경할 수 없는 상수 == 포인터
상수 포인터 == 상수를 가르키는 포인터
포인터에 배열의 이름을 대입한 후, 포인터를 배열의 이름처럼 사용
int arr[3] = {10, 20, 30}; // 배열 선언
int* ptr_arr = arr; // 포인터에 배열의 이름을 대입함
printf("배열의 이름을 이용하여 배열 요소에 접근 : %d %d %d\n", arr[0], arr[1], arr[2]);
printf("포인터를 이용하여 배열 요소에 접근 : %d %d %d\n", ptr_arr[0], ptr_arr[1], ptr_arr[2]);
printf("배열의 이름을 이용한 배열의 크기 계산 : %d\n", sizeof(arr));
printf("포인터를 이용한 배열의 크기 계산 : %d\n", sizeof(ptr_arr));
결과값
배열의 이름을 이용하여 배열 요소에 접근 : 10 20 30
포인터를 이용하여 배열 요소에 접근 : 10 20 30
배열의 이름을 이용한 배열의 크기 계산 : 12
포인터를 이용한 배열의 크기 계산 : 8
배열의 이름으로 포인터 연산을 수행하여 각각의 배열 요소에 접근하여 연산
int arr[3] = {10, 20, 30}; // 배열 선언
printf("배열의 이름을 이용하여 배열 요소에 접근 : %d %d %d\n", arr[0], arr[1], arr[2]);
printf("배열의 이름으로 포인터 연산을 해 배열 요소에 접근 : %d %d %d\n", *(arr+0), *(arr+1), *(arr+2));
결과값
배열의 이름을 이용하여 배열 요소에 접근 : 10 20 30
배열의 이름으로 포인터 연산을 해 배열 요소에 접근 : 10 20 30
arr이 배열의 이름이거나 포인터이고 n이 정수일 때,
arr[n] == (arr + n)*
배열의 요소로 포인터 변수를 가지는 배열
int i, arr_len;
int num01 = 10, num02 = 20, num03 = 30;
int* arr[3] = {&num01, &num02, &num03}; // int형 포인터 배열 선언
arr_len = sizeof(arr)/sizeof(arr[0]);
for (i = 0; i < arr_len; i++)
{
printf("%d\n", *arr[i]);
}
결과값
10
20
30
당신의 시간이 헛되지 않는 글이 되겠습니다.
I'll write something that won't waste your time.