Неверное значение lvalue в ошибке присваивания в C - PullRequest
1 голос
/ 27 февраля 2011

Я получаю сообщение об ошибке, описанное в заголовке, когда пытаюсь запустить свой код с этой строкой:

(int**)newPtr = *(list + index);

Кто-нибудь знает, что не так?

Это мои объявления

int index; 
int* newPtr;
static int* list;

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

В коде есть пара ошибок:

  • newPtr объявлен как указатель на целое число, но вы приводите его к указателю на указатель нацелое число, которое является неправильным.

  • список + индекс также является указателем на целое число * (список + индекс) является целым числом, на которое указывает (список + индекс).Но вы пытаетесь присвоить это newPtr (который также приводится к неверному типу, как указано выше).

Возможно, вы намеревались сделать это:

newPtr = list+index;

иполучить указатель на целое число, расположенный в списке + индексное место.

0 голосов
/ 27 февраля 2011

* (список + индекс) возвращает int. Если вы хотите указатель, просто используйте

newPtr = list + index;

int ** означает указатель на указатель на int, который, похоже, не имеет никакого значения.

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