Присвоение char * c [] двойному указателю в структуре - PullRequest
0 голосов
/ 05 октября 2011

У меня есть такая структура:

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

и двумерный массив символов, объявленный как

char *c[32];

Я заполняю массив char внутри цикла и в конце передаю его в struct * s. Каков был бы правильный способ сделать это?

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

оба, похоже, не работают.

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

c - это массив из 32 указателей на символ, то есть типа char *[32], и, как и любой массив, он может автоматически и тривиально распадаться на указатель на первый элемент массива, который имеет тип char **. Кажется, это то, что вам нужно.

&c, однако имеет указатель типа на массив из 32 указателей на char, то есть char *(*)[32], и вам это не нужно!

Кажется, ваша проблема с s и маленькой стрелкой. Попробуйте:

s.x = c;

Кстати, высказывание не работает не так полезно, как копирование реальных сообщений об ошибках ...

0 голосов
/ 05 октября 2011
s *t;
t->x = c;

У меня работает .Почему именно это не работает?Что такое сообщение об ошибке?Может быть, вы перепутали typedef s, который является типом, и переменной s?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...