先搞清楚你的代码是什么意思,再思考为什么会这样 int *s; printf("%p\n", s); 表示把int型指针s的值,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式 由于没给指针s赋值,所以它的输出是不确定的,至于例1中s和t为啥一样,只能说是个巧合 printf("%d\n", &s); 表示把s这个变量的地址,也就是s自己所在的内存单元的地址(注意不是指针s的值,也不是s所指向的内存单元的值),当做整型数字打印出来 指针自身占4个字节,相邻声明的两个变量的地址之差就是第一个变量的长度4
先搞清楚你的代码是什么意思,再思考为什么会这样
表示把
int型指针s
的值
,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式由于没给指针s赋值,所以它的输出是不确定的,至于例1中s和t为啥一样,只能说是个巧合
表示把
s
这个变量的地址,也就是s
自己所在的内存单元的地址(注意不是指针s的值,也不是s所指向的内存单元的值),当做整型数字打印出来指针自身占4个字节,相邻声明的两个变量的地址之差就是第一个变量的长度4