|
허접한답변이 될수도있고 거짓말이 될수도있겠지만
저는 엄청 단순하게 생각합니다.
일단 x라는것자체는 2차원배열인데 f()는 마치 일반 숫자처럼 사용해버립니다.
1차원배열이라고 해야할까영?
변수의 타입자체가 배열인데 그배열엔 어떤 구조가 존재할꺼구영.
다른건 다몰겠는데 에러가
cannot convert'int[3]*'to'int'
이라는말은
2차원 배열을 1차원형태로 변환할수없다라고 말하는거같네영.
참고로 2차원까지는 int[n]* 이런식으로 표현이 가능합니다.
뭔말인가하면 n개의 원소를 가진 포인터배열이라고 할수있을까영?
(돌머리라. 햇갈립니다. ㅡ.ㅡ;)
이런표현은 3차원부터는 불가능한걸로 알고있습니다.
뭐 하다보면 가능하겠지만 포인터는 2중포인터이상은 쓸수없잖아영.
걍 좋게 알던대로 하시는게 좋을듯..
어떤분이 예전에 님같은 상황에서 헤매고있으니까. 이런말씀을 해주더라구영.
컴퓨터를 이해하지말고 그상황에서 내식대로 해석하라고..
왜냐면. 컴퓨터는 거짓말은 안하지만. 그렇다고 똑똑하지도 않으니까..
걍 나오는 현상 알아서 해석하라는겁니다. ㅎㅎㅎ
전재용 님이 쓰신 글 :
: #include<stdio.h>
: void f(int *r);
: main()
: {
: int x[2][3]={1,2,3,4,5,6};
: f(x);-------------------------------------------error
: }
:
: void f(int *r)
: {
: int i;
: for(i=0;i<=5;i++)
: printf("%d",*(r+i));
: }
:
: 위의 내용을 컴파일 시켰더니 컴파일이 안되고 에러가 나타나더라구요.
: 내용인 즉슨 cannot convert'int[3]*'to'int'라고요..
: 왜 이것이 실행이 안되나요?
: 그래서 &x[0][0]값을 대입하면 실행되구요
: 또한 x의 배열을 다시x[6]으로 잡으면 실행이 되더라구요..
: 좀 가르켜 주세요..참이해가 안되네요.
: 참고로 작업환경은 window turbo c 3.1입니다.
|