在C++初级版第5版的书中有一个练习(2.25),我不知道。
练习2.25:确定以下每个变量的类型和值。
(a) int* ip, &r = ip;
现在,这本书给出了这个例子:
int i = 42;
int *p; // p is a pointer to int
int *&r = p; // r is a reference to the pointer p所以,我的问题是,为什么在这个练习中&r没有*操作符?有什么不同的写作吗
int *&r = ip;或
int &r = ip;(其中ip是指向int的指针)
发布于 2014-09-05 13:48:50
我猜这本书的作者认为,签名int*将对所有逗号分离的变量声明执行,使r成为对指针的引用。确实是代码不编译。,因为这不是真的。ip被声明为指向int的指针,而r仅声明为对int的引用。
编译器解释
int * ip, &r = ip;相当于
int * ip;
int & r = ip; // won't compile您需要额外的*来声明它为指针类型的引用:
int *op, *&r = ip;您还可以使用typedef
typedef int* IntPtr;
IntPtr op, &r = ip;发布于 2014-09-05 13:57:02
你被弄糊涂是对的。
我找到了勘误表页,上面写着
第59页:练习2.25 (a)应为int* ip,i &r = i;
这更有意义。
(这可能是个评论,但在这里读起来更容易.)
https://stackoverflow.com/questions/25687096
复制相似问题