Größe des Arrays von Zeigern

ich habe eine Frage bezüglich sizeof-operator

Code 1:

int main()
{
    int p[10];
    printf("%d",sizeof(p));   //output -- 40
    return 0;
}

Code 2:

int main()
{
    int *p[10];
    printf("%d",sizeof(*p));   //output -- 4
    return 0;
}

in der ersten code-p Punkte in ein array von ints.
in der zweiten code-p Punkte in ein array von Zeigern.
ich bin nicht in der Lage zu verstehen, warum der erste code o/p ist 40 aber der 2. code o/p 4 dachte, die beiden Punkte zu einem array der gleichen Größe ?

In deinem 2. Beispiel (und in der Regel für arrays), die *p ist das gleiche wie p[0]. So sizeof(*p) ist das gleiche wie sizeof(p[0]) ist die Größe eines Zeigers.

InformationsquelleAutor Amol Sharma | 2011-12-20

Schreibe einen Kommentar