You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中为何指针变量自身地址与它指向的变量地址不同?

为什么指针变量自身的地址和它指向的变量地址不同?
  • 指针变量ptr本身就是一个独立的变量,它和x一样需要占用内存空间来存储数据:x存的是整数20,ptr存的是x的内存地址。
  • &x获取的是变量x在内存中的存储位置,&ptr获取的是指针ptr自己的存储位置,这是两个完全不同的内存单元,所以地址肯定不一样。

看你提供的代码:

#include <stdio.h>
int main()
{
    int *ptr;
    int x = 20;
    ptr = &x;
    printf("address of x = %p\n", &x);
    printf("address of ptr = %p\n", &ptr);
}

对应的输出:

address of x = 0x7ffe31da2274
address of ptr = 0x7ffe31da2278

这里ptr内部存储的值其实就是0x7ffe31da2274(也就是x的地址),但ptr自己在内存里的位置是0x7ffe31da2278——这是两回事。如果要验证这点,你可以加一行代码打印ptr存储的内容:

printf("value stored in ptr = %p\n", ptr);

这时候输出就会和&x完全一致。

内容的提问来源于stack exchange,提问作者emirhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:00:55