2011-10-04 30 views
-1

双指针我有这样一个结构:分配的char * C [],在结构

typedef struct stringd{ 
char **x; 
}s; 

和二维字符数组声明为

char *c[32]; 

我填充炭数组在循环内部并在结尾传递给结构体*。这样做的正确方法是什么?

s->x = &c; 
or 
s->x = c; 

都似乎没有工作。

+0

'c'是什么?它没有在任何地方声明 – rodrigo

+0

我的不好。这是一个错字。现在纠正它! – thefunkycoder

+0

双指针是一个指向double的指针:-) – 2011-10-04 22:41:24

回答

0
s *t; 
t->x = c; 

Works for me。为什么它不工作?什么是错误信息?也许你有困惑typedef s,这是一个类型,变量s

2

c是32个指针的数组到char,即,char *[32]型的,以及任何阵列,它可以自动地和平凡衰变到一个指针数组的第一个元素,该元素是char **类型。这似乎是你需要的。

&c,但是它的类型指针是指向char的32个指针的数组,也就是char *(*)[32],你不需要这个!

你的问题似乎与s和小箭头。尝试:

s.x = c; 

顺便说一句,说不工作是不是复制实际的错误信息是有用的......

+1

指针类型是'char *(*)[32]',而不是'...(&)...'。 – jpalecek

+0

@jpalecek当然!我的错误,纠正了。 – rodrigo

+0

谢谢rodrigo。 – thefunkycoder