Jaka jest różnica pomiędzy:C++ * vs [] jako parametr funkcji
void foo(item* list)
{
cout << list[xxx].string;
}
i
void this(item list[])
{
cout << list[xxx].string;
}
Zakładając przedmiot jest:
struct item
{
char* string;
}
Z wskazując wskaźnik do pierwsza z tablic znaków
i list
jest tylko tablicą elementów ...
+1 dla "Zauważ, że tablice wskaźników do próchnicy, gdy przekazywane jako parametry". Nie wiedziałem tego, co ciekawe. – Drise
Wyrażenia tablicowe nie tylko ulegają rozpadowi do wskaźników, gdy określa się typ tablicy jako parametr funkcji, to faktycznie zmienia się na typ wskaźnika dla wszystkich celów, w tym przeciążanie, 'sizeof' i' decltype'. Możesz nawet zadeklarować go w jeden sposób i zdefiniować go w inny sposób (ale prawdopodobnie nie powinieneś). – aschepler
Byłoby dobrze dodać tekst ze standardu, aby nie sprawić nikomu wrażenia, że tablice i wskaźniki są ogólnie takie same. Parametry funkcji są tylko specjalnym przypadkiem, w którym standard stwierdza "Po określeniu typu każdego parametru, dowolny parametr typu" tablica T "[...] jest dostosowywany do" wskaźnika do T "[...]." [dcl.fct] 8.3.5/5. – bames53