Cでのこれらの2つの違いは何ですか?最初のものはポインタの配列です。 私の主な混乱は、2番目の宣言についてです。それは何を宣言しますか? 2人は同じじゃない?Cではint(* ar)[]宣言は何を意味しますか?
int *p []={&i,&j,&k};
int (*ar) [];
Cでのこれらの2つの違いは何ですか?最初のものはポインタの配列です。 私の主な混乱は、2番目の宣言についてです。それは何を宣言しますか? 2人は同じじゃない?Cではint(* ar)[]宣言は何を意味しますか?
int *p []={&i,&j,&k};
int (*ar) [];
2つは同じではありません。第2の配列は、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
ちょうどに従ってください
int *p []={&i,&j,&k};
//読み://
int (*ar) [];
を "pはintへのポインタの配列である" "ARは、int型の配列へのポインタである"
はそれをアウトSorry.Edited。ありがとうございました。 – Neer
["intの配列としてのpの宣言]"(https://cdecl.org/?q=int+*p+%5B%5D)、["intの配列へのポインタとしての宣言]"(https: /cdecl.org/?q=int+%28*ar%29+%5B%5D) – kay
同様の質問で[この回答](https://stackoverflow.com/a/30345939/4265352)を見てください。 – axiac