gpt4 book ai didi

c - 在C中保存一个指针地址

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:30 24 4
gpt4 key购买 nike

我想保存一个指针的某个地址,以后用到。

这是保存原始指针的结构:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com