배열의 이름
찬솔나라
질문 제목 : 배열이름
c언어 배열의 이름에다가 더블 포인터를 쓰면 안되는이유질문 내용 :
c언어 배열의 이름에다가 더블 포인터를 쓰면 안되는이유질문 내용 :
int a[10];
int *b=a;
이렇게 쓰는거 이해가 되는데
포인터 b를
int **b=&a;
라고 쓰면 안되는 이유가 뭘까요??
아 c문법 배울떄는 그냥 그렇게 이해하고 썻는데다배우고 나서 몇달지나니깐 생각이 드네요..
제생각에는 a가 상수포인터라서 그런거 같은데 왜 그렇까요??
에러는 안나는데 실행시에 오류가남
-
꽃가을
참고로.. int (*a)[10] 은..
int array[10];
a = &array; 도 되고..
int arra[20][10];
a = array; 도 됩니다.. 2차원 배열의 경우는 앞에 &를 붙이지 말아야 합니다. -
여우By
int **b는.. int* 타입을 가리키는 포인터 타입이기 때문이지요..
int* 와 int[10] 은 다릅니다.. 사용할때는 비슷해 보여도... int**로 int[10] 을 가리킬 수는 없습니다..
int** 는 int* 를 가리켜야 합니다..
다만 int [10] 을 가리킬 수 있는 포인터가 존재하는데.. 그게 바로 배열포인터입니다....
제가 위에서 제시한 코드에서 a에 해당되지요..
말 그대로 배열을 가리키는 포인터예요..
보면늦다 님의 댓글 -
세실
int b[10];
int (*a)[10] = &b;
그러나 이 코드는 적법합니다. 배열 앞에 &를 붙이는건 의미가 좀 다릅니다... -
뿌우
\배열명은 포인터 상수\라고 생각한다면 좌변값이 뭐가 오던지 간에 &a 라는것 자체가 이상하다고 봐야 합니다.
-
그리
배열이름이 주소값을가르키니까 &a 가안되지않을까요?