首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++初级练习2.25

C++初级练习2.25
EN

Stack Overflow用户
提问于 2014-09-05 13:31:40
回答 2查看 494关注 0票数 4

在C++初级版第5版的书中有一个练习(2.25),我不知道。

练习2.25:确定以下每个变量的类型和值。 (a) int* ip, &r = ip;

现在,这本书给出了这个例子:

代码语言:javascript
复制
int i = 42;
int *p; // p is a pointer to int
int *&r = p; // r is a reference to the pointer p

所以,我的问题是,为什么在这个练习中&r没有*操作符?有什么不同的写作吗

代码语言:javascript
复制
int *&r = ip;

代码语言:javascript
复制
int &r = ip;

(其中ip是指向int的指针)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-05 13:48:50

我猜这本书的作者认为,签名int*将对所有逗号分离的变量声明执行,使r成为对指针的引用。确实是代码不编译。,因为这不是真的。ip被声明为指向int的指针,而r仅声明为对int的引用。

编译器解释

代码语言:javascript
复制
int * ip, &r = ip;

相当于

代码语言:javascript
复制
int * ip;
int & r = ip; // won't compile

您需要额外的*来声明它为指针类型的引用:

代码语言:javascript
复制
int *op, *&r = ip;

您还可以使用typedef

代码语言:javascript
复制
typedef int* IntPtr;
IntPtr op, &r = ip;
票数 7
EN

Stack Overflow用户

发布于 2014-09-05 13:57:02

你被弄糊涂是对的。

我找到了勘误表页,上面写着

第59页:练习2.25 (a)应为int* ip,i &r = i;

这更有意义。

(这可能是个评论,但在这里读起来更容易.)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25687096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档