這兩個在C中有什麼區別?第一個是指針數組。 我的主要困惑是關於第二個聲明。它聲明瞭什麼。這兩個不一樣嗎?int(* ar)[]聲明在C中意味着什麼?
int *p []={&i,&j,&k};
int (*ar) [];
這兩個在C中有什麼區別?第一個是指針數組。 我的主要困惑是關於第二個聲明。它聲明瞭什麼。這兩個不一樣嗎?int(* ar)[]聲明在C中意味着什麼?
int *p []={&i,&j,&k};
int (*ar) [];
兩者並不相同。第二個是指向int
數組的指針。
將2D數組作爲參數傳遞時,可以將此類聲明用作函數參數。例如,給定這樣的功能:
void f(int (*ar)[5]) // array size required here to do pointer arithmetic for 2D array
{
...
}
你可以這樣調用它:
int a[5][5];
f(a);
另一個例子爲本地參數:
int a[5] = { 1,2,3,4,5 };
int (*ar)[]; // array size not required here since we point to a 1D array
int i;
ar = &a;
for (i=0;i<5;i++) {
printf("a[%d]=%d\n", i, (*ar)[i]);
}
輸出:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
Sorry.Edited了這一點。謝謝。 – Neer
[「將p聲明爲指向int的指針]](https://cdecl.org/?q=int+*p+%5B%5D),[」將ar聲明爲指向int數組的指針「](https:/ /cdecl.org/?q=int+%28*ar%29+%5B%5D) – kay
看看[這個答案](https://stackoverflow.com/a/30345939/4265352)上的類似問題。 – axiac