声明数组:带空格的数组的名称
Declaring arrays: name of the array with spaces
我试图理解教授代码的一部分。他举了一个硬件作业的例子,但我不确定如何理解这部分代码。
这是代码:
void addTask(TaskOrAssignment tasks[], int& taskCount, char *course, char *description, char *dueDate)
{
tasks[taskCount].course = course;
tasks[taskCount].description = description;
tasks[taskCount].dueDate = dueDate;
taskCount++;
}
问题:"tasks[taskCount].course = course;
"是否访问或声明字符课程的位置?
我希望我能得到这个答案,我对这个网站也很陌生。
谢谢。
tasks[taskCount].course = course;
让我们一次分解一下。首先,我们使用赋值运算符 (=) 将一个变量的值分配给另一个变量。
右手边很简单,只是名为course
的变量被声明为char*
。
它被分配给变量 tasks[taskCount].course
。如果查看该方法的参数,可以看到tasks
被声明为TaskOrAssignment
对象的数组。所以tasks[taskCount]
指的是这个数组的一个元素。末尾的.course
引用该对象中名为 course
的字段。假设此代码已编译,则该字段在 TaskOrAssignment
类中声明为char*
。
最有可能的是,两个course
变量都表示一串字符。(这源自 C。完成所有操作后,course
和 tasks[taskCount].course
都指向同一个字符串缓冲区。
course
是一个字符指针,它指向堆栈或堆中存储' '
终止字符串的内存块。
tasks[taskCount].course
也是一个字符指针,但赋值只是让tasks[taskCount].course
指向与course
相同的内存地址。
course
是一个char*
(指向char
的指针)。想必,TaskOrAssignment
的course
成员也是char*
。该行所做的只是将 course
的值分配给数组中第 taskCount
个元素的成员course
。
据推测,course
参数旨在成为指向以 null 结尾的 C 样式字符串中第一个字符的指针。因此,在此赋值之后,数组元素的course
成员将指向相同的 C 样式字符串。但是,当然,指针实际上可能指向任何地方。
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 为什么从函数返回数组时需要将数组声明为静态数组.(C++)
- 在 c++ 中直接访问的内联数组声明
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 来自函数参数的 C++ 静态数组声明
- C++ 中的动态数组声明
- C++数组声明
- 数组声明中的错误:表达式必须具有常量值
- 程序随数组声明崩溃
- 运行时和编译时的数组声明
- C++数组声明和初始化
- 带有常量表达式的数组声明
- C ,数组声明,模板,链接器错误
- 如何用'n'维数组声明 std::vector?
- 数组声明上的编译器错误
- 这是什么数组声明
- 头文件类中的数组声明
- 节点数组声明
- 在静态数组声明中使用了两次C++常量