vorbei typedef (Feste Größe) array als Wert

Ich bin schwer zu verstehen typedef Muster für arrays.

typedef char Char10[10];
void fun (Char10 a)  //not passing reference (interested in pass by value)
{
  if(typeid(Char10) == typeid(char*))
    throw 0;  //<--- never happens
}

int main ()
{
  char a[10];  fun(a);  //ok
  char b[11];  fun(b);  //why works ?
}

Warum die unterschiedlichen Größen der array als Wert akzeptiert fun() ? Sind char[10] und char[11] nicht verschiedene Arten ?

Bearbeiten: Für diejenigen, die sagt, es zerfällt zu Zeiger, siehe meinen bearbeiteten code. char[10] und char* scheint nicht zu passen.

  • Wenn Menschen sagen, dass "array zerfällt zu" pointer " Sie beziehen sich auf parameter a specifially. Also, in Ihrem if innerhalb der Funktion sollen Sie zu vergleichen typeid(a) == typeid(char*). Dies wird Ihnen zeigen, dass die Typen übereinstimmen. Vergleichen typeid(Char10) == typeid(char*) nicht alles zeigen. Diese sind in der Tat unterschiedliche Typen.
InformationsquelleAutor iammilind | 2011-05-17
Schreibe einen Kommentar