Home Forums US Life C 와 C++ 의 2D 이상의 배열에서의 차이? C++ 에서 에러나는 이유? This topic has [10] replies, 0 voices, and was last updated 1 year ago by 84. Now Editing “C 와 C++ 의 2D 이상의 배열에서의 차이? C++ 에서 에러나는 이유?” Name * Password * Email Topic Title (Maximum Length 80) 1. C 에서 실행. 실행/해석/이해 문제 없음. `#include <stdio.h> int main() { int a[3][3] = {{10,20,30},{40,50,60},{70,80,90}}; int *p[3] = {a+0, a+1, a+2}; printf("%d, %d, %d \n", *p[0], *p[1], *p[2]); printf("%d, %d", *(p[0]+1), *(p[2]+2)); return 0; } 아웃풋: 10, 40, 70 20, 90` 2. C ++에서 실행. 실행/해석/이해 문제 많음. 해석하기 힘듦. 어레이 포인터도 아니고...이거 뭐지... `#include <iostream> int main(){ int a[3][3] = {{10,20,30},{40,50,60},{70,80,90}}; // int *p[3] = {a+0, a+1, a+2};// error: cannot convert ‘int (*)[3]’ to ‘int*’ in assignment //int (*p)[3][3] = {a+0, a+1, a+2};// error: scalar object ‘p’ requires one element in initializer int (*p[3])[3] = {a+0, a+1, a+2}; // ok. 그런데 이걸 어떻게 해석하지? std::cout << *p[0] <<" " << *p[1]<<" " << *p[2] <<'\n'; std::cout << p[0] <<" " << p[1]<<" " << p[2] <<'\n'; std::cout << **p[0] <<" " << **p[1]<<" " << **p[2] <<‘\n'; // 이걸 어떻게 해석하나 std::cout << (*p[0])[0] <<" " << (*p[1])[0]<<" " << (*p[2])[0] <<'\n'; // 위와 같은데 이걸 어떻게 해석하나 std::cout << (*p[0])[0] <<" " << (*p[0])[1]<<" " << (*p[0])[2] <<'\n'; return 0; } 아웃풋: 0x7ffe0de6a9a0 0x7ffe0de6a9ac 0x7ffe0de6a9b8 0x7ffe0de6a9a0 0x7ffe0de6a9ac 0x7ffe0de6a9b8 10 40 70 10 40 70 10 20 30` I agree to the terms of service Update List