【问题标题】:Data Types and Structs数据类型和结构
【发布时间】:2010-04-30 14:28:49
【问题描述】:

我正在复习考试,我被这个问题难住了。

考虑以下声明:

enum CategoryType {HUMANITIES, SOCIALSCIENCE, NATURALSCIENCE}; 
const int NUMCOURSES = 100; 
struct CourseRec 
{ 
         string courseName; 
         int courseNum; 
         CategoryType courseCategory; 
}; 
typedef CourseRec CourseList [NUMCOURSES]; 
CourseList courses; 
int index1, index2; 
  1. 表达式 courses[index1] .courseName[index2] 的数据类型是什么?

(a) 课程列表 (b) CourseRec (c) 字符串 (d) 炭 (e) 没有;该表达式在语法上无效

我认为答案是字符串,因为 courseName 是一个字符串,甚至可能是 CourseRec,因为它在结构中,但答案是 (d)char。为什么这是 char 数据类型?非常感谢任何帮助。

【问题讨论】:

  • 应该是 typdef CourseRec[NUMCOURSES] CourseList 吗?
  • 不,C++ 不是那么简单。
  • 不。 typedef 中的顺序就像对象定义中的顺序一样。 #define 会有所不同。
  • 答案不是char,而是const char&
  • CourseList 是非常量的,所以类型不是char&

标签: c++ struct types


【解决方案1】:

让我们一步一步来:

课程[index1] .courseName[index2]

  • 课程是CourseRec 的数组
  • 课程[index1] 是CourseRec
  • 课程[index1] .courseName 是string
  • courses[index1] .courseName[index2] 是char *

* - 实际上是char&

【讨论】:

  • 如果stringstd::string 它实际上是const char&
  • 这就是程序员在面对一些疯狂的结构时的想法。 +1
  • 咳咳,实际上是 char&,正如 Mark B 所说,courseName 不是 const。
【解决方案2】:

字符串是一个char数组,所以取anyString[0]会返回字符串数组第一个位置的char。

【讨论】:

  • C++ 字符串 只是一个 char 数组,但您是正确的,因为 C++ 字符串上的 [] 运算符确实返回与指定位置对应的 char在字符串中。
  • 它实际上返回的是对 char 的引用,而不是 char 按值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2021-11-13
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
相关资源
最近更新 更多