C++的简单的入门级问题
定义 int *p = &a; int *&b = p;后一个语句怎么理解?我怎么也不明白,b是存放地址的吗?为什么还要加一个&表示引用?*再加上&表示什么?有什么作用?请大虾们讲解讲解,不要嘲笑我,我是C高手,但是在C++这行不通。多谢多谢。
追问:*和&是运算符吧?b先和谁结合?还有为什么你说因此b的类型也是(int *)?
定义 int *p = &a; int *&b = p;后一个语句怎么理解?我怎么也不明白,b是存放地址的吗?为什么还要加一个&表示引用?*再加上&表示什么?有什么作用?请大虾们讲解讲解,不要嘲笑我,我是C高手,但是在C++这行不通。多谢多谢。
追问:*和&是运算符吧?b先和谁结合?还有为什么你说因此b的类型也是(int *)?
答案:详细讲解就是 int *p = &a;是定义了一个指针变量p 并把变量a 的地址赋给pint *&b = p; &和*的优先级是相同的,但按自右而左的方向结合,先进行&b运算 得到b的地址 在进行*运算 即&b所指向的变量 即p
这样推:
p的类型是(int *),因此b的类型也是(int *);
b前加一个&,就是说b是p的引用(也就是别名)。
int *p = &a;
这句话表示 定义一个int类型的指针p 存储a的地址
int *&b=p;
其实这句话的意思是 首先取出b的地址即 得到一个指针 然后采用间接寻址符号*
去访问&b指向的内存区域 并赋值为p的值
明白不
呵呵,这是简单的指针问题,b不是存放地址的,&b是b的地址,加个*就是指向b的地址,然后初始化为p,就这样解释!我用的是VC++6.0编译器,结果上与“樹下野狐”有些出入。这个原因主要是编译器不同。*与&先后顺序处理不一样,所以结果不一样。
VC6.0 编译的时候,是定义一个int *类型的b,那就相当于&b=p,即&b=&a,所以a=b=4;
上一个:C++与C语言有什么不同?
下一个:求个C++程序设计.....谢谢