由于指针尚未在以下代码片段中初始化,如何存储值 2 ?
int *p;
*p = 2;
printf("%d %d\n",p,*p);
上述程序的输出如下:
0 2
我正在阅读 Peter Linden 的“Expert C Programming”,发现了这一点:
float *pip = 3.141; /* Wont compile */
但是,上面的程序是如何给出输出的呢?是因为使用 GCC 吗?还是我错过了什么?
编辑
我理解为什么float *pip = 3.141
无效,因为地址位置必须是整数。那么这是否意味着 p 存储内存地址“0”并且“2”的值被分配给该地址?为什么在这种情况下没有分段错误?