Странное поведение при печати указателей
У меня есть следующий код:
#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);
}
В результате получается, чтоd.arg1
не являетсяNULL
а такжеd.arg2
равно 0. Например:
arg1: 0x7fff84b3d660 | arg2: 0
Когда я добавляю указатель на main, ничего не меняется. Однако, когда я печатаю этот указатель:
#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);
}
результат всегда приводит к:
arg1: (nil) | arg2: 4195264 | test: (nil)
Почему я испытываю это поведение? Я не понимаю, как печать другого значения указателя изменяет значение другого указателя на NULL. Обратите внимание, что я использую компилятор GCC 4.8.2.