dysow 发表于 2021-2-26 10:39:54

如何输出变量的所有地址

int a = 10;

系统分配了4个字节,&a是返回的首字节地址,那么用什么代码能把4个字节的地址分别输出呢,以及每个字节里存的内容

人造人 发表于 2021-2-26 10:55:36

本帖最后由 人造人 于 2021-2-26 10:57 编辑

#include <stdio.h>

int main(void) {
    int a = 10;
    unsigned char *p = (unsigned char *)&a;
    for(size_t i = 0; i < sizeof(a); ++i) {
      printf("%p -> %.2x\n", &p, p);
    }
    return 0;
}

dysow 发表于 2021-2-26 11:23:50

人造人 发表于 2021-2-26 10:55


谢谢指点,这样定义p,就代表了p是指向了a的指针,因为是char类型,所以p保存的是a的第一个字节,是这么理解吧。

人造人 发表于 2021-2-26 11:25:52

dysow 发表于 2021-2-26 11:23
谢谢指点,这样定义p,就代表了p是指向了a的指针,因为是char类型,所以p保存的是a的第一个字节,是这么 ...

人造人 发表于 2021-2-26 11:26:44

dysow 发表于 2021-2-26 11:23
谢谢指点,这样定义p,就代表了p是指向了a的指针,因为是char类型,所以p保存的是a的第一个字节,是这么 ...

"所以p保存的是a的第一个字节"
所以p保存的是a的第一个字节的地址

dysow 发表于 2021-2-26 11:30:39

人造人 发表于 2021-2-26 11:26
"所以p保存的是a的第一个字节"
所以p保存的是a的第一个字节的地址

谢谢,一下明白了指针还可以这么玩,以前一直都蒙的
页: [1]
查看完整版本: 如何输出变量的所有地址