双指针我有这样一个结构:分配的char * C [],在结构
typedef struct stringd{
char **x;
}s;
和二维字符数组声明为
char *c[32];
我填充炭数组在循环内部并在结尾传递给结构体*。这样做的正确方法是什么?
s->x = &c;
or
s->x = c;
都似乎没有工作。
双指针我有这样一个结构:分配的char * C [],在结构
typedef struct stringd{
char **x;
}s;
和二维字符数组声明为
char *c[32];
我填充炭数组在循环内部并在结尾传递给结构体*。这样做的正确方法是什么?
s->x = &c;
or
s->x = c;
都似乎没有工作。
s *t;
t->x = c;
Works for me。为什么它不工作?什么是错误信息?也许你有困惑typedef s
,这是一个类型,变量s
?
c
是32个指针的数组到char,即,char *[32]
型的,以及任何阵列,它可以自动地和平凡衰变到一个指针数组的第一个元素,该元素是char **
类型。这似乎是你需要的。
&c
,但是它的类型指针是指向char的32个指针的数组,也就是char *(*)[32]
,你不需要这个!
你的问题似乎与s
和小箭头。尝试:
s.x = c;
顺便说一句,说不工作是不是复制实际的错误信息是有用的......
指针类型是'char *(*)[32]',而不是'...(&)...'。 – jpalecek
@jpalecek当然!我的错误,纠正了。 – rodrigo
谢谢rodrigo。 – thefunkycoder
'c'是什么?它没有在任何地方声明 – rodrigo
我的不好。这是一个错字。现在纠正它! – thefunkycoder
双指针是一个指向double的指针:-) – 2011-10-04 22:41:24