«lvalue требуется как левый операнд присваивания» при использовании указателей в C - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу попрактиковаться с указателями в C. Я получил сообщение об ошибке «lvalue требуется как левый операнд присваивания». Ошибка отображается при & y = & x. Так, как я мог переписать адрес от x до y?

int main()
{
    int x=3;
    int y=4;
    &y=&x;
    printf("x=%p,y=%p",&x,&y);
    return 0;
}

Ответы [ 3 ]

1 голос
/ 06 февраля 2020

y - это переменная, а y не может быть изменена. & y это просто способ получить адрес этой переменной.

0 голосов
/ 06 февраля 2020

&y не может быть переназначен. Местоположение назначается статически во время компиляции, и вы не можете изменить его во время выполнения.

0 голосов
/ 06 февраля 2020

Адрес переменной неизменен. Они не могут быть изменены.

Что вы можете сделать, это сохранить этот адрес в переменной указателя, а затем изменить этот указатель так, чтобы он указывал на что-то другое:

int x=3, y=4;
int *p;

p = &x;
*p = 2;
printf("p=%p, &x=%p\n", (void *)p, (void *)&x);  // prints same value both times
printf("x=%d\n", x);   // prints 2

p = &y;
*p = 7;
printf("p=%p, &y=%p\n", (void *)p, (void *)&y);  // prints same value both times
printf("y=%d\n", y);   // prints 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...