注册 登录
编程论坛 C++教室

[求助]关于指针的指针

ichigo 发布于 2007-06-13 09:49, 744 次点击
看书看到指针的指针这里了
就是
char c = 'A';
char * cp = &c;
char ** cpp = &cp;

原来的书里没有介绍过这个,但是也可以理解
所以突然想问个问题
既然可以用指针的指针,改变指向指针的指针来调用指针指向的数据
那可以不可以用改变地址的地址来调用存储相应内存地址的数据呢?
就是
char ** cpp = &&c;

这样可以吗
新手问的问题比较弱,请误见怪

[此贴子已经被作者于2007-6-13 9:50:27编辑过]

9 回复
#2
HJin2007-06-13 12:44

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编辑过]

#3
wfpb2007-06-13 13:02

指针是个变量.
int c=0,*p1=&c,*p2=p1;
p1,p2的值就是c的地址,但是(&c)不是左值,只有左值才能取地址和被赋值。。。
而且想想看p1,p2两个变量的地址也不相同,你&&c无非就是想要得到指向c的指针的地址,那么你认为这可能吗?会是&p1,&p2还可能有更多。。。

#4
doom52112007-06-13 19:52
斑竹说的对,上面p1,p2都是指向变量C,而且肯定两个指针地址不一样,所以&&c得到的到底是p1的地址还是p2的地址呢?所以说是不行的.
的确指针是个很复杂的东西,经常容易让思维绕在一起打结,像我这样的菜鸟就怕指针.特别是多重指针.
#5
I喜欢c2007-06-13 22:34
2楼是老外?

..
幸好基本能看懂..
#6
wfpb2007-06-13 22:50
A r-value must be an l-value

貌似反了
#7
孤魂居士2007-06-13 23:24

2楼老外兄 你能不能教下我的英语啊?我的英语一塌糊涂
#8
ichigo2007-06-13 23:56
以下是引用孤魂居士在2007-6-13 23:24:31的发言:

2楼老外兄 你能不能教下我的英语啊?我的英语一塌糊涂

#9
aipb20072007-06-14 12:43
以下是引用wfpb在2007-6-13 22:50:22的发言:
A r-value must be an l-value

貌似反了

An l-value must be a r-value

[此贴子已经被作者于2007-6-14 14:11:54编辑过]

#10
yuyunliuhen2007-06-14 14:14
I think he just made a clerical error,but his way is good,and we can learn something from it.   o(∩_∩)o
1