就是
char c = 'A';
char * cp = &c;
char ** cpp = &cp;
原来的书里没有介绍过这个,但是也可以理解
所以突然想问个问题
既然可以用指针的指针,改变指向指针的指针来调用指针指向的数据
那可以不可以用改变地址的地址来调用存储相应内存地址的数据呢?
就是
char ** cpp = &&c;
这样可以吗
新手问的问题比较弱,请误见怪
[此贴子已经被作者于2007-6-13 9:50:27编辑过]
no, it is not allowed.
[CODE]#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
char c = 'A';
char * cp = &c;
char ** cpp = &cp;
char** cpp2 = &(&c); // error C2102: '&' requires l-value
return 0;
}[/CODE]
Here c is an l-value, &c is a r-value. So that &(&c) is bad.
========================
An l-value is a value that can appear at the left hand side of the asignment (=) operator.
int x;
x = 5 // x is an l-value;
5 = 6 // wrong, 5 is not an l-value. 5 is an r-value, though.
A r-value must be an l-value.
[此贴子已经被作者于2007-6-13 12:46:16编辑过]
指针是个变量.
int c=0,*p1=&c,*p2=p1;
p1,p2的值就是c的地址,但是(&c)不是左值,只有左值才能取地址和被赋值。。。
而且想想看p1,p2两个变量的地址也不相同,你&&c无非就是想要得到指向c的指针的地址,那么你认为这可能吗?会是&p1,&p2还可能有更多。。。