我想保存一个指针的特定地址,以后再使用它。
这是保存原始指针的结构:

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 addresschar*”运算符的结果不可赋值您可以获得一个地址,但不能通过“分配”一个新地址来更改它。
看起来您需要保存和还原指针本身,而不是该指针的位置因此,可以通过删除与号来修复代码:
char* temp =  CSVUtil->RD;
...
CSVUtil->RD = temp;

关于c - 在C中保存一个指针地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24057306/

10-09 06:00
查看更多