Merkwürdiges Verhalten beim Drucken von Zeigern
Ich habe folgenden Code:
#include <stdio.h>
typedef struct {
int* arg1;
int arg2;
} data;
int main(int argc, char** argv) {
data d;
printf("arg1: %p | arg2: %d\n", d.arg1, d.arg2);
}
Die Ausgabe endet damitd.arg1
ist nichtNULL
undd.arg2
ist 0. Zum Beispiel:
arg1: 0x7fff84b3d660 | arg2: 0
Wenn ich einen Zeiger auf main hinzufüge, ändert sich nichts. Wenn ich diesen Zeiger jedoch drucke:
#include <stdio.h>
typedef struct {
int* arg1;
int arg2;
} data;
int main(int argc, char** argv) {
data d;
int* test;
printf("arg1: %p | arg2: %d | test: %p\n", d.arg1, d.arg2, test);
}
die Ausgabe ergibt immer:
arg1: (nil) | arg2: 4195264 | test: (nil)
Warum erlebe ich dieses Verhalten? Ich verstehe nicht, wie das Drucken eines anderen Zeigerwerts den Wert eines anderen Zeigers in NULL ändert. Beachten Sie, dass der von mir verwendete Compiler GCC 4.8.2 ist.