【问题标题】:* or & to receive the address* 或 & 接收地址
【发布时间】:2018-02-20 01:41:27
【问题描述】:

目前我正在完成一个中级 C++ 课程的作业。 PDF 要求创建一个构造函数,该构造函数接收字符串的地址和一些具有不同数据类型的其他参数。这是我的尝试:

Passenger(const char &pName, const char &pDestination, int year, int month, int destination);

我认为是合理的。我一直认为 & 是我们用来检索变量内存地址的东西。

已经为学生编写了第二个构造函数,并要求学生将其写入 .h 文件中。问题是这个构造函数返回一个变量的地址,但它是这样写的:

const* char name() const

我真的很困惑。我很新手,所以这绝对是我缺乏理解。如果有人能解释为什么讲师将 * 用于应该返回地址的构造函数,我将不胜感激。

【问题讨论】:

  • 投反对票的人。您至少可以冒昧地解释一下原因吗?
  • & 用于创建reference* 创建一个指针,该指针存储指向的另一个对象的地址。 (不是反对者)
  • 他说他没有投反对票
  • 我删除了我的评论。
  • 牢记:C++ 的 C 部分让很多人感到困惑。这只是混淆的几个例子之一。在学习过程中你需要小心。

标签: c++ pointers reference


【解决方案1】:

符号&具有三种含义:

  • 作为运算符,获取对象的地址。例如:&x 给出了x 的地址。

  • 表示对对象的引用(别名)。例如:int &x = a 表示 x 是名为 a 的整数的别名。

  • 按位与(与您的问题无关)

所以当您写const char &pName 时,您的意思是const char *pName。星号表示一个指针,它是一个用于存储地址的变量。

【讨论】:

  • 其实至少三个意思。
  • @NeilButterworth 第三个是什么
  • 按位与运算符是第三种含义。不确定是否有第四个。
  • 位和运算符。
  • @NeilButterworth 我已经修好了
猜你喜欢
  • 2010-09-21
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多