C语言 : implicit pointer dereferencing

标签 c

在 C 中,是否可以为取消引用的指针定义别名/快捷方式?

即假设定义如下:

void * ptr_to_my_variable = 0x2ff00000;

是否可以定义一个对应于 *ptr_to_my_variablemy_variable 符号,这样:

*ptr_to_my_variable = 321;
my_variable = 123;
if (my_variable == *ptr_to_my_variable) printf "aliasing/shortcut works";

我能想到的唯一解决办法是:

#define my_variable *my_variable
int my_variable = (int *) 0x2ff00000;

my_variable = 123;

但这分明是自找麻烦……

最佳答案

不,没有任何技巧可以让您隐式取消引用指针。

但是,您在编辑中提到的预处理器技巧可让您隐藏显式取消引用,使其看起来隐含:

#define my_alias (*my_var_ptr)

但是请注意,您应该在表达式两边加上括号,这样可以避免您在编写时遇到麻烦

my_alias++;

关于C语言 : implicit pointer dereferencing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963468/

相关文章:

c - 函数指针属于哪个缓存?

c - asm 语法高亮和 asm 文件在 Visual Studio 中显示

c - 在看门狗定时器存在的情况下编程

c - 从 .h 文件中删除未使用的函数原型(prototype)

c - 如何在内核中放置微秒延迟?

android - 删除原生 android 中的循环依赖

c - 如何从已存在的文件中复制权限?

java - 将灰度图像转换为 RGB

c - 什么是 GTK "render detail"?

c - 当一个人执行 memcpy() 时,主要使用什么硬件资源?