배열의 배열과 포인터의 배열
개인적으로 * ptmp []는 다차원 배열이라고 생각하지만 선언조차 실패합니다.
실수로 발언했습니다.
정중하게 @angel_p_57 씨로부터 실수 발언
결론에 따르면, 내 머리에서 이해할 수있는 허용량을 초과하는 사건이라고 말할 수 있습니다.
즉시 소스 코드를 노출하십시오.
처음 몇 줄: D0~D3은 일반 배열
D: 포인터의 배열
pp · hoge : 배열의 배열
boo: 이른바 더블 포인터 변수
pppp : 배열에 대한 포인터
#include <stdio.h>
int main(void){
int D0[10] = {0};
int D1[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int D2[10] = {2, 2, 99, 2, 2, 2, 2, 2, 2, 2};
int D3[10] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
int *D[10] = {D0, D1, D2, D3};
int pp[4][10] = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{10, 11, 12, 13, 14, 15, 16, 17, 18, 19},
{20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
{30, 31, 32, 33, 34, 35, 36, 37, 38, 39}
};
int hoge[][10] = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{10, 11, 12, 13, 14, 15, 16, 17, 18, 19},
{20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
{30, 31, 32, 33, 34, 35, 36, 37, 38, 39}
};
int **boo;
int (*pppp)[10];
printf("1.D[2][2]:[%d]\n", D[2][2] );
printf("2.D[2][2]:[%d]\n", (*(D+2))[2] );
printf("3.D[2][2]:[%d]\n", *((*(D+2))+2) );
printf("4.D[2][2]:[%d]\n", *((D[2])+2) );
printf("5.pp[2][2]:[%d]\n", pp[2][2] );
printf("6.pp[2][2]:[%d]\n", (*(pp+2))[2] );
printf("7.pp[2][2]:[%d]\n", *((*(pp+2))+2) );
printf("8.pp[2][2]:[%d]\n", *((pp[2])+2) );
boo = &D[0];
printf("9.boo[2][2]:[%d]\n", boo[2][2] );
printf("10.boo[2][2]:[%d]\n", *((*(boo+2))+2) );
pppp = hoge;
printf("11.pppp[2][2]:[%d]\n", pppp[2][2] );
printf("12.pppp[2][2]:[%d]\n", *((*(pppp+2))+2) );
return 0;
}
이하, 출력 결과
일단 의도 한 내용이 출력되고 있지만 억지로 출력하고 있기 때문에 전혀 이해할 수없는 orz
세상 일반적으로 1.5.9.11.의 4 종류를 2 차원 배열로 출력하고 있다고 할 수있다.
그러나 C 언어에는 다차원 배열 (2 차원 배열 이상의 배열)이 없으므로 2.3.4.6.7.8.10.12와 같은 설명 방법으로 문제없이 출력 할 수 있습니다.
그리고 11.12는 배열에 대한 포인터를 사용하여 출력합니다.
음, C 언어는 깊은 곳입니다.
※여담
당연히 여기까지 조사하면 캐스트 등을 보겠습니다. 그러나 여기에서는 건드리지 않겠습니다.
이상 orz
참고 URL
C 언어 선언, 왜 그렇게 쓰는가?
Pointer의 초 기초 학습 #2
다차원 배열 실현
문법상 다차원 배열 없음
호환되지 않는 포인터 타입으로부터의 대입
10-4. 포인터 포인터
Reference
이 문제에 관하여(배열의 배열과 포인터의 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chesscommands/items/c6182ac20f3bc752a6f3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(배열의 배열과 포인터의 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chesscommands/items/c6182ac20f3bc752a6f3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)