C的一元'&'是做什么的?为什么对常量不起作用?

时间:2018-12-04 02:17:03

标签: c pointers unary-operator

我正在尝试制作一种新的编程语言,并且试图从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 :(得分:1)

C的一元&为您提供了它所应用于的事物的地址。

例如,&x给出了x的地址。

它不会创建新变量,而是将x复制到该变量中,然后返回新变量的地址。它返回x的地址,简单明了。

答案 1 :(得分:1)

  

C的一元“&”有什么作用?为什么对常量不起作用?

因为该语言不允许。

与其他语言(例如新语言&1)一样,

C 可以允许.NoOneIsHere。仅仅C标准并没有看到这样做的好处。没有技术理由不这样做,只是没有理由这样做。

答案 2 :(得分:0)

&通常是引用类型,用于获取值地址,例如b =&b,b等于b的地址。