我想保存一个指针的某个地址,以后用到。
这是保存原始指针的结构:
typedef struct CSV
{
char *RD;
...
}CSV;
这是被调用的函数:
static status_t write_to_buffer(CSV *CSVUtil,...)
{
// The way i was planning to save address:
char* temp = &CSVUtil->RD;
...
// pointer location ++
CSVUtil->RD++;
...
// The way i wanted to restore it:
&CSVUtil->RD = temp;
}
首先,我是否在根据需要进行地址恢复?
我收到此错误消息:expression must be a modifiable lvalue
所以我猜我不是,但我能做些什么来解决这个问题?
编辑:
明确一点,我想做的是将地址复制到某个指针,更改使用的地址(增加它),然后将复制的地址设置回使用的地址。
干杯。
最佳答案
这个分配不正确:
char* temp = &CSVUtil->RD;
表达式 &CSVUtil->RD
返回一个指向字符指针的指针(即 char**
),但您将其分配给字符指针 char *
,因此缺少一级间接寻址。输出中应该有一个编译器警告,告诉您这个问题。
赋值 &CSVUtil->RD = temp
不起作用的原因是“获取地址 &
”运算符的结果不可赋值。您可以获得一个地址,但不能通过“分配”一个新地址来更改它。
看起来您需要保存和恢复指针本身,而不是该指针的位置。因此,您可以通过删除与号来修复代码:
char* temp = CSVUtil->RD;
...
CSVUtil->RD = temp;
关于c - 在C中保存一个指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057306/