Se si scrive una funzione C++ comeDifferenza tra [parentesi quadre] e * asterisco
void readEmStar(int *arrayOfInt) { }
vs una funzione C++ come:
void readEmSquare(int arrayOfInt[]) { }
Qual è la differenza tra l'utilizzo di [parentesi quadre] vs * asterisco, e qualcuno ha una guida di stile su quale è preferibile, supponendo che siano equivalenti al compilatore?
Per completezza, un esempio
void readEmStar(int *arrayOfInt, int len)
{
for(int i = 0 ; i < len; i++)
printf("%d ", arrayOfInt[i]) ;
puts("");
}
void readEmSquare(int arrayOfInt[], int len)
{
for(int i = 0 ; i < len; i++)
printf("%d ", arrayOfInt[i]) ;
puts("");
}
int main()
{
int r[] = { 2, 5, 8, 0, 22, 5 } ;
readEmStar(r, 6) ;
readEmSquare(r, 6) ;
}
Dal vettori e puntatori sono abbastanza simili in C++ forse si potrebbe aggiungere un po 'veloce sulla quale sia la differenza (pila contro heap, ecc) – tloach
in readEmSquare, controllando sizeof (arrayOfInt) restituirà 4, si tratta di un puntatore – bobobobo
Vedere la mia nota su quando si utilizza char [] senza inizializzazione. –