奇怪的C指针试验,这说明了什么?
居然会因为我的输出不同,指针指向不同的地方,这是为什么呢?
PS:突然想到 难道不是C的问题 而是编译器的问题?
回答:
先搞清楚你的代码是什么意思,再思考为什么会这样
int *s;printf("%p\n", s);
表示把int型指针s
的值
,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式
由于没给指针s赋值,所以它的输出是不确定的,至于例1中s和t为啥一样,只能说是个巧合
printf("%d\n", &s);
表示把s
这个变量的地址,也就是s
自己所在的内存单元的地址(注意不是指针s的值,也不是s所指向的内存单元的值),当做整型数字打印出来
指针自身占4个字节,相邻声明的两个变量的地址之差就是第一个变量的长度4
回答:
什么意思?你本来就没有给指针变量赋值,它的值当然是不确定的。
回答:
C语言中没有定义一个未赋值的指针应该是什么值,所以这的确是取决于编译器的实现。
以上是 奇怪的C指针试验,这说明了什么? 的全部内容, 来源链接: utcz.com/p/195677.html