Chcę wiedzieć, jaka jest różnica międzyPointer vs Array w definicji funkcji: jaka jest różnica między void fct1 (int * p) a void fct1 (int p [])?
void fct1(int *p)
i
void fct1(int p[])
wiem, że oba wskaźniki, ale czy są jakieś różnice
Chcę wiedzieć, jaka jest różnica międzyPointer vs Array w definicji funkcji: jaka jest różnica między void fct1 (int * p) a void fct1 (int p [])?
void fct1(int *p)
i
void fct1(int p[])
wiem, że oba wskaźniki, ale czy są jakieś różnice
Nie ma absolutnie żadnej różnicy, gdy używana jako funkcja taki parametr. Kompilator traktuje obie formy w identyczny sposób.
Nie ma różnicy. Dla kompletności, oto co średnia mówi:
C99 standardowy 6.7.5.3 sekcja 7
deklaracja parametru jako „” tablicy typu „” powinny być dostosowane do „” wykwalifikowanego wskaźnik do typ '', ...
@ Mark Ransom dziękuję za szybką odpowiedź. ale słyszałem, że int p [] jest stałym wskaźnikiem, więc adres, który wskazuje nie może być zmieniony, czy to prawda? – user2142328
("wskaźniki funkcji" są wskaźnikami funkcji, a nie funkcjami, które pobierają wskaźniki. Z tego powodu, jestem pewien, że to * musi * być duplikatem.) –
@ user2142328 'p []' deklaruje tablicę o rozmiarze do być później zdeterminowany. Byłoby to nielegalne w parametrze funkcji, którego rozmiar musi być natychmiast znany. W tym kontekście jest traktowany specjalnie, uzyskując natychmiastową transformację do '* p'. – Potatoswatter