hop*_*pia 13 c c++ compiler-construction pointers programming-languages
例如:
int x[100];
void *p;
x[0] = 0x12345678;
x[1] = 0xfacecafe;
x[3] = 0xdeadbeef;
p = x;
((int *) p) ++ ;
printf("The value = 0x%08x", *(int*)p);
Run Code Online (Sandbox Code Playgroud)
编译上面的代码会在++运算符的行上生成一个左值所需的错误.
Fre*_*Foo 18
强制转换创建一个类型的临时指针int *
.您不能增加临时值,因为它不表示存储结果的位置.
在C和C++标准中,(int *)p
是一个rvalue,它大致意味着一个只能出现在赋值右侧的表达式.
p
另一方面是左值,这意味着它可以有效地出现在赋值的左侧.只有左值可以递增.
归档时间: |
|
查看次数: |
2758 次 |
最近记录: |