C'deki bu ikisi arasındaki fark nedir? Birincisi, işaretçi dizisidir. Ana kafa karışıklığım ikinci deklarasyonla ilgili. Ne bildiriyor? İki aynı değil mi?Int (* ar) [] bildiriminin C cinsinden anlamı nedir?
int *p []={&i,&j,&k};
int (*ar) [];
C'deki bu ikisi arasındaki fark nedir? Birincisi, işaretçi dizisidir. Ana kafa karışıklığım ikinci deklarasyonla ilgili. Ne bildiriyor? İki aynı değil mi?Int (* ar) [] bildiriminin C cinsinden anlamı nedir?
int *p []={&i,&j,&k};
int (*ar) [];
Bu ikisi aynı değil. İkincisi, int
bir dizi için işaretçisidir.
Bir 2D dizisini parametre olarak geçirirken böyle bir bildirimi işlev parametresi olarak kullanabilirsiniz.
void f(int (*ar)[5]) // array size required here to do pointer arithmetic for 2D array
{
...
}
Böyle diyebiliriz:
int a[5][5];
f(a);
yerel parametre olarak başka örnek:
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]);
}
Çıktı:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
Sadece'ü takip edin
int *p []={&i,&j,&k};
// okur:
int (*ar) [];
// dışarı Sorry.Edited
"Ar ints bir dizi için bir işaretçi" "s işaretçiler bir dizi int için". Teşekkür ederim. – Neer
["int göstergesinin dizisi olarak dec"] (https://cdecl.org/?q=int+*p+%5B%5D), ["int dizisine işaretçi olarak ar bildir"] (https://cdecl.org/?q=int+%28*ar%29+%5B%5D) – kay
Benzer bir soru üzerinde [bu yanıt] 'a (https://stackoverflow.com/a/30345939/4265352) bir göz atın. – axiac