C 的一元“&”是做什么的?为什么它不适用于常量?
What does C's unary '&' do? Why doesn't it work on constants?
我正在尝试创建一种新的编程语言,我正在尝试添加来自 C 的 &
(指针)运算符。它到底有什么作用?也就是说,它如何'create'一个指针?为什么它不能创建一个指向常量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;
C 的一元 &
为您提供它所应用的对象的地址。
因此,例如,&x
给出了 x
的地址。
它不会创建新变量,将 x 复制到该变量中,然后 return 新变量的地址。 return是x
的地址,简单明了。
What does C's unary '&' do? Why doesn't it work on constants?
因为语言不允许。
C 可以 允许 &1
和其他语言一样,例如新语言 .NoOneIsHere
。只是 C 标准也没有看到这样做的好处。没有技术上的理由不这样做,只是没有理由这样做。
&通常作为引号类型,用来取一个值地址,b = &b,例如b等于b的地址。
我正在尝试创建一种新的编程语言,我正在尝试添加来自 C 的 &
(指针)运算符。它到底有什么作用?也就是说,它如何'create'一个指针?为什么它不能创建一个指向常量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;
C 的一元 &
为您提供它所应用的对象的地址。
因此,例如,&x
给出了 x
的地址。
它不会创建新变量,将 x 复制到该变量中,然后 return 新变量的地址。 return是x
的地址,简单明了。
What does C's unary '&' do? Why doesn't it work on constants?
因为语言不允许。
C 可以 允许 &1
和其他语言一样,例如新语言 .NoOneIsHere
。只是 C 标准也没有看到这样做的好处。没有技术上的理由不这样做,只是没有理由这样做。
&通常作为引号类型,用来取一个值地址,b = &b,例如b等于b的地址。