Как мне вставить значение для элемента массива, на который указывает указатель в структуре

#c #arrays #pointers

#c #массивы #указатели

Вопрос:

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

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

aStruct содержит char** anArray и char *string .
char *test = «тест».

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

 struct aStruct
{
   char **anArray;
};
  

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

Ответ №1:

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

aStruct содержит char** anArray и char *string . char *test =
«тест».

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

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

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

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

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