Qual è la differenza tra:C++ * vs [] come parametro di funzione di
void foo(item* list)
{
cout << list[xxx].string;
}
e
void this(item list[])
{
cout << list[xxx].string;
}
Supponendo oggetto è:
struct item
{
char* string;
}
Con il puntatore che punta al prima di una serie di caratteri
e list
è solo una serie di articoli ...
+1 a "nota che gli array decadimento ai puntatori quando passate come parametri". Non lo sapevo, interessante sapere. – Drise
Non solo le espressioni dell'array decadono per i puntatori, quando si specifica un tipo di array come parametro di funzione, esso viene effettivamente modificato in un tipo di puntatore per tutti gli scopi, inclusi overloading, 'sizeof' e' decltype'. Puoi persino dichiararlo in un modo e definirlo in un modo diverso (ma probabilmente non dovresti farlo). – aschepler
Sarebbe bene aggiungere il testo dallo standard, in modo da non dare a nessuno l'impressione che array e puntatori siano gli stessi in generale. I parametri di funzione sono solo un caso speciale in cui lo stato standard "Dopo aver determinato il tipo di ciascun parametro, qualsiasi parametro di tipo" array di T "[...] viene regolato per essere" puntatore a T "[...]." [dcl.fct] 8.3.5/5. – bames53