¿Cuál es la diferencia entre:C++ * vs [] como un parámetro de la función
void foo(item* list)
{
cout << list[xxx].string;
}
y
void this(item list[])
{
cout << list[xxx].string;
}
Suponiendo artículo es:
struct item
{
char* string;
}
Con el puntero que apunta a la primero de una serie de caracteres
y list
es solo una matriz de elementos ...
1 para "Tenga en cuenta que la viste la caries a los punteros cuando se pasan como parámetros". No lo sabía, es interesante saberlo. – Drise
Las expresiones de matriz no solo decaen a punteros, cuando se especifica un tipo de matriz como parámetro de función, en realidad se cambia a un tipo de puntero para todos los propósitos, incluida la sobrecarga, 'sizeof' y' decltype'. Incluso puede declararlo de una manera y definirlo de una manera diferente (pero probablemente no debería hacerlo). – aschepler
Sería bueno agregar el texto del estándar, para evitar dar a cualquiera la impresión de que los arrays y punteros son los mismos en general. Los parámetros de función son solo un caso especial donde el estándar establece "Después de determinar el tipo de cada parámetro, cualquier parámetro del tipo" array of T "[...] se ajusta para que sea" puntero a T "[...]". [dcl.fct] 8.3.5/5. – bames53