关于指针指向的问题
#include<stdio.h>int main()
{
char array = "jishipeng";
char (*p) = &array;
printf("&array of address is %p\n",&array);
printf("&p of address is %p\n",&p);
printf("p of address is %p\n",p);
printf("%s",p);
return 0;
}//p的地址为什么会和&p的不一样? 本帖最后由 sunrise085 于 2019-12-23 17:07 编辑
&p输出的是*p的地址,即存放指针p的单元的地址;而p输出的是*p指向的单元的地址
&p的地址为存放指针p的地址
p的地址为其指向的数组的存放地址 &p可以说是存放p的位置 不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从堆栈中获取存储空间,array 占用的是 10 个 int 单元,共计 40 个字节,p 占用的是 1 个指针单元,对于 32 位的程序而言,p 占用 4 个字节,对于 64 位的程序而言,p 占用的是 8 个字节。p 中存储着 array 的内存地址,但是 p 本身作为一个变量,也有自己的内存地址,这不是很正常吗?
jackz007 发表于 2019-12-23 17:51
不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从 ...
谢谢
页:
[1]