特殊的 指针 问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:34:57
如何实现一个 指针--
*p 的值 等于 指向的变量的值 + 一个常量 的值
当 改变 变量的值时,*p跟着改变
int a=0;
int *p;
p = &a; //想让*p = a+1;
//改变 a
a = 2;
//希望这时 p* = 3;

struct SmartPointer {
int *boundVar;
int offsetVar;
}

int GetValue(SmartPointer *sp) {
return *(sp->boundVar) + sp->offsetVar;
}

void main() {
int a=1;
SmartPointer sp;
sp->boundVar = &a;
sp->offsetVar = 1;
printf("%d\n", GetValue(&sp));
}

.....
怎么说都觉得这段代码很脑残……

我个人意见,你这个想法不能实现
p = &a; 这句话已经将p的指针和a的地址固定起来了,两个就是绑定在一起了
*p = a,而不是*p = a+1;
改变a的值是不会影响到p的指针指向的,除非你要先解除指针p和a的绑定,然后再将p指针重新赋值,但是不管怎么养还是不能实行你说的那种随a的值不同而随时改变指针变量p的值,数组形势的p倒是可以。

这是不可能透明实现的。 无论如何一定需要写一个更新*p值的语句,否则这计算a+1的开销跑哪去了啊

*p = ++a;即可。