728x90
반응형
# include <stdio.h>

// 포인터의 배열 
int main()
{
	int arr[2][3] ={{1,2,3},{4,5,6}};
	
	int* ptr[2] ={arr[0],arr[1]};
	
	int i,j;
	
	// ptr[0] = arr[0][0] = 1, arr[0][1] = 2, arr[0][2] = 3
	// ptr[1] = arr[1][0] = 4, arr[1][1] = 5, arr[1][2] = 6
	
	
	for(i = 0; i<2; i++)
	{
		for(j = 0; j<3; j++)
		{
			printf("%d (==%d, %d) ",ptr[i][j], *(ptr[i]+j), *(*(ptr+i)+j)); // 3가지 방식 모두 가능. 
		} // 동적할당시에는 *(*(ptr+i)+j) 방식을 많이 사용한다. 
		printf("\n");
	}
	
	printf("\n%p\n",&ptr[0]); // 포인터변수 자체의 주소
	printf("%p\n",ptr[0]); // ptr변수 [0]이 가리키고 있는 주소 
	printf("%p\n",arr);  // 배열 대표 주소
	printf("%p\n",&arr[0]); // 배열의 arr[0] 주소는 배열의 대표 주소
	printf("%p\n",&arr[1]); // 배열의 arr[1]의 주소 
	
	printf("%p\n",&arr[0][0]); // &arr[0][0] == &arr[0]
	printf("%p\n",arr[0][0]);
	printf("%p\n",**arr); // arr[0][0]과 == **arr 은 주소가 같다. 
	
	return 0; 
}

* 배열의 메모리의 경우 순서대로 받는다. 

 

arr == arr[0] == &arr[0] == &arr[0][0] != arr[0][0]

 

arr[0][0] == **arr

 

 

[그림1] 포인터 배열 예 출력

 

출처 : 인프런 - 홍정모의 따라하며 배우는 C

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기