Есть идеи ? Назначение предупреждения делает указатель из целого числа без приведения - PullRequest
0 голосов
/ 17 апреля 2020

У меня это так

Моя структура выглядит следующим образом:

typedef struct something
{
   int randomData;
   int **array;
}SOMETHING;

массив размещен

SOMETHING *ANYTHING= calloc(sizeof(SOMETHING),sizeof(int));
ANYTHING->array = calloc(someSizeParamater,sizeof(SOMETHING));
int key = 5;

в коде, где я wi sh для сделать это в array[index] Я положил некоторое значение int:

ANYTHING->array[index]=key;

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

После выполнения ANYTHING->array[0][index] = key; программа вылетает и не работает должным образом, так как работает с данным предупреждением.

1 Ответ

0 голосов
/ 17 апреля 2020

array набирается int**, который является указателем (а именно, другим указателем, указателем на int).

Оператор [] разыменовывается (один раз).

Таким образом, array[...] оценивает то, на что указывает array, то есть, как упоминалось выше int*, которому ваш код пытается присвоить int здесь:

ANYTHING->array[index]=key;

В большинстве случаев вы не хотите назначать int для int*, для указателя на int.

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