Что делает унарная буква «С»?Почему это не работает с константами? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать новый язык программирования и пытаюсь добавить оператор & (указатель на) из C. Что именно он делает?То есть как он «создает» указатель?Почему он не может создать указатель на константу 1 ?Моя текущая реализация оператора выглядит следующим образом, но он также работает с константами, поэтому я предполагаю, что оператор C работает не так:

operator & (any one argument):
    temp = allocate (typeof argument)
    store argument in temp
    return temp

1 : пример программы:

int main(){
    int* x;
    x = &1;
}

gcc выход:

ptr.c: In function ‘main’:
ptr.c:3:6: error: lvalue required as unary ‘&’ operand
  x = &1;

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Что делает унарный символ «С»?Почему он не работает с константами?

Поскольку язык не позволяет этого.

C может разрешить &1, как и в других языках, таких какновый язык .NoOneIsHere.Просто стандарт C не видел никакой выгоды для этого.Для этого нет технической причины, просто нет оснований для этого.

0 голосов
/ 04 декабря 2018

& обычно в качестве типа кавычки, используется для определения значения адреса, например, b = & b, b равно адресу b.

0 голосов
/ 04 декабря 2018

С унарное & дает вам адрес объекта, к которому он применяется.

Так, например, &x дает адрес x.

Это несоздайте новую переменную, скопируйте x в эту переменную и затем верните адрес новой переменной.Возвращает адрес x, простой и понятный.

...