2012-03-14 3 views
0

함수로 인수로 전달할 행렬의 포인터를 작성하려고합니다. 내가 오류 얻을 불구하고이 일에행렬의 첫 번째 값에 대한 포인터 만들기

int **p; 
p = &(&matrix[0][0]); 
func(p); 

: 여기가 무슨 "좌변이 단항 '&'피연산자로 필요합니다." 나는 그것이 올바른 문법을 가지고 있지 않은 저의 문제일지도 모른다고 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다.

+5

'p = matrix' 할 것입니다. – perreal

+1

@perreal p가 선언되는 방법에 따라 컴파일되지 않을 수도 있습니다. –

답변

4

글쎄, matrix[0]은 매트릭스의 시작을 가리 킵니다 (자체는 포인터가 아니지만 배열 임). 따라서 다음과 같이해야합니다 :

int* = matrix[0]; 
+0

매트릭스 [0]도이 방법으로 액세스 할 수 있다고는 생각하지 않습니다. 시도해 봤어? 아마 & matrix [0] [0]. 그런 다음, 그는 행렬을 함수 내부의 배열로 취급해야합니다. 또는 그것을 던지십시오. 그러나 잘못된 유형으로 캐스트하려면 void *로 캐스트하면됩니다. – Spidey

+0

@ Spidey 왜 작동하지 않습니까? 나를 위해 일합니다. –

+0

음, 그러면 더 공부해야한다고 생각합니다. 그래도 내게별로 의미가 없다. matrix [0]이 int * 인 경우, 행렬은 int **입니다. 그리고 그렇지 않습니다. 내 편견 일 뿐이야 ... – Spidey

0

함수는 int [] [SIZE] 또는 int * [SIZE] 매개 변수가 작동해야합니다. C 행렬은 선형화되어 있으므로 포인터에 대한 포인터처럼 처리 할 수 ​​없습니다.

2

행렬 [0] [0]은 int이므로, 주소는 & 행렬 [0] [0]입니다. 원하는 것은 무엇입니까

p = &matrix[0][0]; 
관련 문제