2013-03-07 18 views
5

voglio sapere che cosa è la differenza traPointer vs Array nella definizione della funzione: qual è la differenza tra void fct1 (int * p) e void fct1 (int p [])?

void fct1(int *p) 

e

void fct1(int p[]) 

so che entrambi sono puntatori, ma ci sono differenze

+1

@Mark Ransom vi ringrazia per la rapida risposta. ma ho sentito che int p [] è un puntatore costante, quindi l'indirizzo a cui punta non può essere cambiato è vero? – user2142328

+0

("i puntatori di funzione" sono puntatori alle funzioni, non funzioni che prendono i puntatori .. detto questo, sono sicuro che questo * deve * essere un duplicato.) –

+1

@ user2142328 'p []' dichiara una matrice di una dimensione a essere in seguito determinato. Questo sarebbe illegale in un parametro di funzione, la cui dimensione deve essere nota immediatamente. Quindi in questo contesto è trattato in modo speciale, ottenendo una trasformazione istantanea in '* p'. – Potatoswatter

risposta

8

Non c'è assolutamente nessuna differenza se usato come una funzione parametro come quello Il compilatore tratta entrambe le forme in modo identico.

2

Non c'è differenza. Per completezza, ecco cosa dice la norma: 6.7.5.3 sezione 7

Una dichiarazione di un parametro come '' array di tipo '

C99 standard' deve essere regolato a '' puntatore qualificato a tipo '', ...

Problemi correlati