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

如何获取变量内存地址及指针指向的值并打印?是否用解引用运算符?

关于C语言指针的地址与取值问题解答

没问题,我来一步步帮你理清这个指针操作的细节~

先看你给出的代码:

int myInt = 15; 
int *myPointer; 
myPointer = &myInt;

1. 获取myInt的内存地址

有两种直接的方式:

  • 直接使用取地址运算符&:&myInt就是myInt变量在内存中的地址。打印时要注意用%p格式符,并且把地址转换为void*类型(这是标准做法,避免编译器警告):
    printf("myInt的内存地址:%p\n", (void*)&myInt);
    
  • 利用已经赋值的指针变量myPointer:因为myPointer = &myInt已经把myInt的地址存到了指针里,所以直接打印myPointer就能得到同样的地址:
    printf("myInt的内存地址(通过指针获取):%p\n", (void*)myPointer);
    

2. 获取myPointer指向的值

这里必须使用解引用运算符*!指针变量myPointer存储的是内存地址,要访问这个地址对应的实际值,就得用*来“解引用”它。*myPointer等价于直接访问myInt,所以可以这样打印:

printf("myPointer指向的值:%d\n", *myPointer);

运行后会输出15,和myInt的值完全一致。

总结一下:

  • 获取变量的内存地址:用&变量名,或者直接使用指向该变量的指针变量(因为指针本身存的就是地址),不需要解引用。
  • 获取指针指向的值:必须使用解引用运算符*指针变量,这样才能从地址跳转到对应的值。

给你一个完整的可运行示例代码:

#include <stdio.h>

int main() {
    int myInt = 15; 
    int *myPointer; 
    myPointer = &myInt;

    // 打印myInt的内存地址
    printf("myInt的内存地址:%p\n", (void*)&myInt);
    printf("通过myPointer获取的myInt地址:%p\n", (void*)myPointer);

    // 打印指针指向的值
    printf("myPointer指向的值:%d\n", *myPointer);
    printf("直接访问myInt的值:%d\n", myInt);

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:03:25