声明数组:带空格的数组的名称

Declaring arrays: name of the array with spaces

本文关键字:数组 声明 空格      更新时间:2023-10-16

我试图理解教授代码的一部分。他举了一个硬件作业的例子,但我不确定如何理解这部分代码。

这是代码:

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。完成所有操作后,coursetasks[taskCount].course 都指向同一个字符串缓冲区。

course是一个

字符指针,它指向堆栈或堆中存储''终止字符串的内存块。

tasks[taskCount].course也是一个字符指针,但赋值只是让tasks[taskCount].course指向与course相同的内存地址。

course是一个char*(指向char的指针)。想必,TaskOrAssignmentcourse成员也是char*。该行所做的只是将 course 的值分配给数组中第 taskCount 个元素的成员course

据推测,course 参数旨在成为指向以 null 结尾的 C 样式字符串中第一个字符的指针。因此,在此赋值之后,数组元素的course成员将指向相同的 C 样式字符串。但是,当然,指针实际上可能指向任何地方。