我想保存一个指针的特定地址,以后再使用它。
这是保存原始指针的结构:
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**
),但您将其分配给字符指针,因此缺少一级间接寻址输出中应该有一个编译器警告,告诉您这个问题。返回赋值不起作用的原因是“take address
char*
”运算符的结果不可赋值您可以获得一个地址,但不能通过“分配”一个新地址来更改它。看起来您需要保存和还原指针本身,而不是该指针的位置因此,可以通过删除与号来修复代码:
char* temp = CSVUtil->RD;
...
CSVUtil->RD = temp;
关于c - 在C中保存一个指针地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24057306/