我有这样的结构:
typedef struct stringd{
char **x;
}s;
和一个声明为
的二维char数组char *c[32];
我在循环中填充char数组,最后将它传递给struct * s。这样做的正确方法是什么?
s->x = &c;
or
s->x = c;
两者似乎都不起作用。
答案 0 :(得分:2)
c
是一个包含32个指向char的指针的数组,即char *[32]
类型的指针,并且作为任何数组,它可以自动且平凡地衰减成指向数组的第一个元素的指针,属于char **
类型。这似乎就是你所需要的。
&c
,但是是指向char的32个指针数组的类型指针,即char *(*)[32]
,你不需要它!
您的问题似乎与s
和小箭头有关。尝试:
s.x = c;
<> BTW,说不起作用没有复制实际错误消息那么有用......
答案 1 :(得分:0)
s *t;
t->x = c;
Works for me。为什么它不起作用?什么是错误消息?也许你混淆了typedef s
这是一个类型,而变量s
?