2013-03-07 18 views
5
i hem noktalar şunlardır ancak herhangi bir fark olduğunu biliyoruz

Pointer vs Array fonksiyon tanımında: void fct1 (int * p) ve void fct1 (int p []) arasındaki fark nedir?

void fct1(int *p) 

ve

void fct1(int p[]) 

arasındaki fark nedir biliyor musunuz

+1

@ Mark Ransom hızlı cevap için u teşekkür ederim. ama int p [] 'in sabit bir işaretçi olduğunu duydum, bu yüzden işaret ettiği adres değiştirilemez değil mi? – user2142328

+0

("işlev işaretçileri" işlevler için işaretçilerdir, işaretçileri alan işlevler değildir. Söylenenleri söylerim, eminim * bu * yinelenen olabilir.) –

+1

@ user2142328 'p []' bir boyut dizisini bildirir daha sonra belirlenecek. Boyutu hemen bilinmesi gereken bir işlev parametresinde bu geçersiz olurdu. Bu bağlamda, özel olarak ele alındığında, '* p''ye anlık dönüşüme geçilir. – Potatoswatter

cevap

8

bir fonksiyonu olarak kullanıldığında kesinlikle hiçbir fark yoktur Böyle bir parametre. Derleyici, her iki formu da aynı şekilde ele alır.

2

Fark yoktur. Bütünlüğü sağlamak için, burada standart söylüyor:

C99 standart 6.7.5.3 bölümü 7

'tip dizisi 'gibi bir parametrenin bir beyan' ' kalifiye işaretçi ayarlanmalıdır tipine '' ...

İlgili konular