Comportamiento extraño al imprimir punteros
Tengo el siguiente código:
#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);
}
La salida termina siendo esod.arg1
no esNULL
yd.arg2
es 0. Por ejemplo:
arg1: 0x7fff84b3d660 | arg2: 0
Cuando agrego un puntero a main, nada cambia. Sin embargo, cuando imprimo ese puntero:
#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);
}
la salida siempre resulta en:
arg1: (nil) | arg2: 4195264 | test: (nil)
¿Por qué estoy experimentando este comportamiento? No entiendo cómo imprimir otro valor de puntero cambia el valor de un puntero diferente a NULL. Tenga en cuenta que el compilador que estoy usando es GCC 4.8.2.