C 언어의 2 차원 배열의 형, A, 및 A [0]의 값이 [0] [0] 값

일부 문제 수식의 값을 2 차원 배열 C 언어의 의미


이틀 후 약간의 깊은 생각의 2 차원 배열이 배열에 대한 질문에 왔을 때 코드를 작성하고, 전. 나는 흥미로운 질문을 생각합니다.

이차원 어레이 (A)에, A, 및 A [0], A [0] [0] 출력 값이 동일하지 않는 이유가 나타내는 동일한 의미입니까?그림 삽입 설명 여기

여기서 설명 & A, A [0], A [0] [0] 그 의미, (A)는 전체의 2 차원 어레이의 어드레스를 나타내고, a는 [0]은 첫 번째 행의 2 차원 어레이의 어드레스를 나타내고,하기 [ 0] [0] 값들이 동일한 왜, 2 차원 어레이의 어드레스의 첫 번째 요소의 첫 번째 행을 나타내고 있지만, 그들이 표현 의미했으나 같지?

실제로, 이들 값은 INT의 CHAR 타입 (1)의 유형, 예를 들어 완전히 다른 것처럼 그들이 완전히 다른 종류, 그들은 단지 값에서 동일하고, 동일하지 않다.
자신의 종류의 서로 다른 값을 설명하기 위해, 우리는 예를 들어 설명한다 걸릴.

그림 삽입 설명 여기
그러나, 이들 세 개의 식의 값이 값에서 동일하지만,이 계산되었다 +1 후, 생성 된 값이 완전히 다르지만, 도면으로부터 알 수있다.
우리는 그래서 우리는 포인터 값이며이 값을 넣을 수 있습니다, 포인터가 값 변수의 주소인지 알고 & A + 1 & A는 [ 0] + 1, A [0] [0] +1 에 대한 포인터로 간주 될 수 있습니다 플러스 하나의 작업. 포인터 더한 연산 규칙 단위로 포인터 변수의 포인터 값을 추가하는 것, 포인터 (P)의 값은 가변 INT의 제 배열의 주소이 어레이의 첫 번째 요소 INT 포인터 P 가리키는 이러한 어레이가되고 상기 P + INT 결과 변수 (1)의 제 2 어레이의 어드레스이다.
우리가 지식을 설명하게, 1 차원 배열의 malloc에 일부 메모리가 더 포인터가 가리키는 것보다, 다음 달성하기 위해 포인터에 할당 할 수 있으며, 2 차원 배열은 2 포인터에 대한 포인터 포인터 두 가지 방법으로 달성 될 수있다 하나 개의 요소입니다. 따라서, 우리는 배열을 이해하는 방법을 포인터 수 있습니다.

&ㅏ

A는이 두 포인터로서 이해 될 수 있고, 2 차원 배열이며, 두 & A 세 포인터 값으로 포인터로서 이해 될 수 있으며, 포인터의 주소이다. 따라서 전술 한 타입의 추가적인 예 및 INT 값 ***는, int 변수 ** 종류이며 그래서 & A + 1 다음 어드레스 INT ** 전체 2 차원 배열이 후 어드레스이다.

및 A [0]

동일하기, [0]는 2 차원 어레이의 첫 번째 줄이므로, 및 A [0]는 두 개의 포인터의 값에 대한 포인터이며, 하나의 포인터로서 이해 될 수 있고, 타입 A [0] 값은 INT **, 가변 타입이므로 및 A [0] +1 INT * 다음 주소 즉, 2 차원 어레이의 제 2 열 어드레스이며, INT의 * 칭한다.

및 A [0] [0]

A [0] [0]은 INT 형 요소는, A [0] [0]는 그것의 포인터 포인터 값,는 A [0] [0] 값은 변수 참조, int 형 *이며 유형 INT되어, A [0] [0] +1 다음 INT 주소, 제 2 차원 배열 변수, 즉 제 1 열 어드레스이다.

이 문서는 모든 독자가 지적 환영하기 위해 존재 수있는 몇 가지 오류, 여기 중지하려면이 문제를 설명합니다.

출시 사 원저 · 원의 찬양 3 · 조회수 180

추천

출처blog.csdn.net/humblehunger/article/details/103549535