아마도 이것은 이전에 묻는 질문과 같을 것입니다. C의 배열과 포인터의 차이점에 대해 많은 질문이 있지만,이 질문에 답하기에는 충분한 정보가 없습니다.C : int의 2D 배열을 int **에 할당하면 CLION이 선을 강조 표시하는 이유는 무엇입니까?
C 배열의 이름은 메모리 블록의 시작 포인터와 같은 것으로 처리되지만, int의 3 x 3 2D 배열의 이름을 int **
내 CLION의 IDE, 그것은 할당을 강조하고 말한다 :
호환되지 않는 포인터 타입 'INT * *'와 'INT [3] [3]'
int x[3][3];
int **px = x; <-- warning here
내가 캐스팅 할 수있는 할당 값을 (int **)로 설정하면 강조 표시가 물론 사라집니다.하지만 - 헤이 - 캐스트 할 수 있습니다. C에서 물건의 helluva 제비와 멀리 사라질 하이라이트를 얻을. 당신이 요구하는 것이 작동 할 것이라는 것을 의미하지는 않습니다.
이 문제는 CLION (또는 더 적절하게는 깔끔) 문제일까요? 아니면 진짜 문제입니까? 어떤 상황에 대한
[편집]
는, 배열/포인터의 차이점에 대한 다른 모든 답변이 문제는 3 × 3 배열은 INT ** 아니기 때문에 왜 그들 중 많은 사람들이 "그 같은 일을 말할 것입니다! " 고맙지 만 그것은 꽤 쓸모없는 정보입니다. 질문하는 사람은 이미 3x3 배열이 int가 아니라는 것을 알고있을 것입니다 ** - 질문은 컴파일 후에 결과 int **를 어떻게 처리합니까? 배열인가요?
문제의 라인을 게시 할 수 있습니까? – Blacksilver
2 차원 배열은 ** 포인터 배열이 아니라 **입니다. –
'int **'는'int *'의 순차적리스트입니다; 'int [3] [3]'은 3 개의 int 순차리스트 3 개 순차리스트입니다. 'int []'는 배열의 첫 번째 요소의 주소로 해석함으로써'int *'로 쇠퇴하지만, 이는 일시적으로 작동하지 않습니다. – zneak