姬世鹏 发表于 2019-12-23 16:32:49

关于指针指向的问题

#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 16:32:50

本帖最后由 sunrise085 于 2019-12-23 17:07 编辑

&p输出的是*p的地址,即存放指针p的单元的地址;而p输出的是*p指向的单元的地址

Tec 发表于 2019-12-23 16:44:43

&p的地址为存放指针p的地址
p的地址为其指向的数组的存放地址

liangzhichao 发表于 2019-12-23 16:57:18

&p可以说是存放p的位置

jackz007 发表于 2019-12-23 17:51:22

       不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从堆栈中获取存储空间,array 占用的是 10 个 int 单元,共计 40 个字节,p 占用的是 1 个指针单元,对于 32 位的程序而言,p 占用 4 个字节,对于 64 位的程序而言,p 占用的是 8 个字节。p 中存储着 array 的内存地址,但是 p 本身作为一个变量,也有自己的内存地址,这不是很正常吗?

姬世鹏 发表于 2019-12-23 22:06:00

jackz007 发表于 2019-12-23 17:51
不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从 ...

谢谢
页: [1]
查看完整版本: 关于指针指向的问题