Как вставить значение для элемента массива, на который указывает указатель в структуре - PullRequest
0 голосов
/ 02 октября 2011

В настоящее время у меня есть структура, которая содержит указатель на массив указателей. Я пытаюсь присвоить значение элементу в массиве указателей, но получаю ошибку сегментации.

aStruct->anArray[0]->string = test;

aStruct содержит строку типа char ** anArray и char *. char * test = "test".

Когда я пытаюсь сделать то, что сделал, у меня возникает ошибка сегментации. Эта команда недействительна?

struct aStruct
{
   char **anArray;
};

Я использовал calloc для создания массива размером 10.

1 Ответ

0 голосов
/ 02 октября 2011
aStruct->anArray[0]->string = test;

aStruct содержит строку типа char ** anArray и char *. char * test = "Тест".

Эта команда недопустима?

Конечно, нет. aStruct->anArray[0] будет char* и не будет иметь члена ->string.

Кроме этого, если он действительно скомпилируется и вы разместили только неправильный код, вы не получите ошибку сегментации, если anArray был правильно выделен и имел правильный размер. Так что вам нужно что-то подобное в вашей программе:

aStruct->anArray = malloc(size * sizeof(*aStruct->anArray));

где размер - как минимум один для вашего случая, но, как правило, количество элементов, к которым вам когда-либо нужно обращаться.

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