Ich habe folgendes Programm. Ich kann jedoch nicht verstehen, warum ich die Adresse des Arrays übergeben muss. Wenn beide auf dieselbe Adresse zeigen. Welches ist die Adresse des ersten Elements des Arrays von Int.Warum kann ich ein Array nicht direkt in C einem Zeiger zuweisen?
Ich erhalte eine Warnung, wenn ich versuche, und tun, um diese "Zuweisung von inkompatiblen Zeigertyp":
ptr = var;
Der komplette Quellcode:
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 den Code kompilieren mit gcc 4.4.4 c89 -Wall -Wextra -O0
Ich habe versucht, Ihren Titel umzuschreiben, da es bedeutungslos war. Bitte überprüfen Sie, ob ich den Kern Ihres Problems richtig ausgewählt habe. –
Ich denke, dein Titel klingt besser als meiner. Vielen Dank. – ant2009
Sie Code-Snippet kompiliert fein. Meinst du, du würdest einen Fehler bekommen, wenn du 'ptr = var' zu main hinzugefügt hättest? –