C에서 2 차원 배열은 선형 배열처럼 저장되지만 이중 포인터를 사용하여 인덱싱됩니다. 우리는 7왜 int [] []를 int **로 변환하는 컴파일러가 이론상 가능하지 않습니까?
에,
{p1 = 0x7fff5fbffb58 , p2 = 0x7fff5fbffb70, p3 = 0x7fff5fbffb88}
다음 p1
포인트 1처럼 뭔가에 4 p2
점 p3
점을
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}.
a
첫 번째 지점을 정의하는 경우 즉, 왜 돈 ' t 컴파일러는 이론적으로 가능한 2 차원 배열에서 이중 포인터로의 변환을 허용합니까? 2 차원 배열은 하나씩 저장되지만 인덱스 정보는 항상 임의의 double 포인터로 전달 될 수 있습니다.
2D 배열의 경우, 컴파일러는 가상 포인터'p1','p2' 및'p3'을 중간 포인터로 저장하지 않습니다. 거짓 가정의 경우 –
-1. 그것은 이론적으로 가능하지 않습니다. ** 배열은 포인터가 아닙니다! ** –