在 C 中,是否可以为取消引用的指针定义别名/快捷方式?
即假设定义如下:
void * ptr_to_my_variable = 0x2ff00000;
是否可以定义一个对应于 *ptr_to_my_variable
的 my_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/