C언어 - 2차원 배열과 메모리

2020. 11. 11. 23:03개인공부/C언어

 

3개짜리가 원소가 2개 있다.

 

int arr[2][3] = { {1,2,3,}, {4,5,6} }; // 초기화 방법 1.

int arr[2][3] = { 1,2,3,4,5,6 }; // 초기화 방법2.

 

// 배열 출력하는 for문

for (int j = 0; j<2; ++j)
{
	for( int i = 0; i < 3; ++i)
    	printf("%d ", arr[j][i]);
}        
 

index 오른쪽에 붙은 걸 for문 안쪽에 넣는다. 

 

배열이 내부적으로는 1차원인데.

 

for문 순서가 arr[][] 배열이 메모리에 저장된 순서가 같으면 계산이 더 빨라진다.

 

 

 

int *ptr = &arr[0][0];

for (int k = 0; k < 6; ++k)
	printf("%d ", ptr[k]);   // 결과값 : 1 2 3 4 5 6

printf("%zd %zd\n", sizeof(arr), sizeof(arr[0])); // 결과값: 24 12

arr[0]의 값은 왜 12일까? arr[0]은 3개 짜리이기 때문이다.  // arr[2][3]은 3개짜리 2개

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 홍정모의 따라배우는 C언어