【发布时间】:2018-05-16 00:16:39
【问题描述】:
我正在编辑别人的代码并试图理解它。该函数传入一个参数void **dst_val。我不擅长指针。我查看了所有有关堆栈溢出的远程相关帖子,但没有找到我要查找的内容。
我有一个结构:
typedef struct {
u_int img_out_len;
char *img_out_val;
} img_out;
我声明了一个指向结构的指针:
img_out *clnt_res;
并为其分配内存。
现在,我很困惑。我需要将void **dst_val 设置为指向结构指针内的img_out_val 指针,但我无法弄清楚语法。为什么这些不正确,什么是正确的?
dst_val = (void *)(*clnt_res).img_out_val; //wrong
dst_val = (void **)clnt_res->img_out_val; //wrong
我还应该注意img_out_val 指向二进制文件的数据。
编辑:
由于函数传入void **dst_val,我需要它在函数返回时指向二进制数据。
【问题讨论】:
-
void **与img_out *不兼容。所以做任何类似的事情都会引发未定义的行为。 -
对不起,它是 typdefed,我应该把它包括在内。
标签: c pointers struct void-pointers