C语言中指针是否等同于内存地址?
关于
&运算符、指针与地址的区别 - 日常编程里,
&运算符生成的指针值基本就是变量的内存绝对地址,这也是大家默认的认知,你的直觉没问题。 - 但从C标准的严格定义出发,
&返回的是指针类型,而非底层硬件层面的“地址”:然而,& cast-expression是指针而非地址。ISO C并未要求指针的值(或转换为int的指针)必须是所指向对象的绝对地址——尽管通常情况确实如此。
- 核心在于C标准对指针的抽象定义:指针是“指向对象的标识”,它的具体存储值(比如转成整数后的值)可以由编译器或平台自行决定,只要能正确完成解引用、指针比较等操作即可。比如某些特殊架构中,指针可能是内存池的偏移量或索引,而非物理内存的绝对地址。
- MPI文档特意强调这点,是因为MPI需要跨各种异构平台,必须严格遵循C标准的抽象规则,不能默认指针就是绝对地址,否则在特殊架构上会出现兼容性问题。
内容的提问来源于stack exchange,提问作者Aditya Kurrodu
相关产品推荐
相关产品推荐

