본문 바로가기
프로그래밍/C언어

9. c언어 배열과 포인터 헷갈리는 부분..

by 수삼이는코딩중 2023. 3. 16.
728x90

pointer & array

포인터
배열

배열을 가리키는 포인터 : int *parr=arr / int (*parr)[3]=arr
parr[1] = arr[1]
(*parr)[1] = arr[1]

2차원 배열
arr = 배열의 첫번째 인덱스의 주소값
arr[0] = arr[0][0]의 주소값

sizeof(arr[0]) : 행의 크기
—————————————————————1차원 배열과 같은 맥락

arr[x][y]의 주소값
원래 배열이 arr[a][b]라고 하면, arr[x][y]의 주소값은 arr + 4bx + 4y

2차원 배열을 가리키는 포인터를 통해서 원소들에 정확히 접근하기 위해서
1. 가리키는 원소의 크기(4)
2. b의 값
위 두 정보가 포인터의 타입에 명시되어 있어야 한다.
따라서 2차원 배열을 가리키는 포인터의 생김새는
int (*parr)[열의 갯수]; /*포인터가 가리키는 배열에 대한 최소한의 정보를 담고 있는 것이다. int : 원소의 크기 4, 열의 갯수 : b의 값*/
parr=arr

댓글