Warum kann ich nicht zuweisen einer array-Zeiger direkt in C?

Habe ich das folgende Programm. Allerdings kann ich nicht verstehen, warum ich muss übergeben Sie die Adresse des Arrays. Wenn Sie beide zeigen auf die gleiche Adresse. Das ist die Adresse des ersten Elements des Arrays von int.

Ich bekomme eine Warnung wenn ich versuchen und tun dies, "assignment from incompatible pointer type":

ptr = var;

Kompletten source-code:

void print_values(int (*ptr)[5])
{
    size_t i = 0;
    for(i = 0; i < 5; i++) {
        printf("%d: [ %d ]\n", i, (*ptr)[i]);
    }
}

int main(void)
{
    /* declare a pointer to an array integers */
    int (*ptr)[5] = NULL;
    /* array of integers */
    int var[] = {1, 2, 3, 4, 5};
    /* assign the address of where the array is pointing to (first element) */
    ptr = &var;
    /* Both are pointing to the exact same address */
    printf("var  [ %p ]\n",(void*)var);
    printf("&var [ %p ]\n", (void*)&var);

    print_values(ptr);
    return 0;
}

Ich kompilieren Sie den code mit gcc 4.4.4 c89 -Wall -Wextra -O0

  • Ich habe versucht zu formulieren, Ihren Titel, denn es war bedeutungslos. Bitte überprüfen, ob ich hob den Kern des Problems richtig.
  • Ich denke, dein Titel klingt besser als meine. Danke.
  • Sie ein code-snippet kompiliert einwandfrei. Meinst du Sie würden eine Fehlermeldung erhalten, wenn Sie Hinzugefügt ptr = var zu main?
InformationsquelleAutor ant2009 | 2010-08-17
Schreibe einen Kommentar