C++结构…函数参数问题

C++结构…函数参数问题,c++,struct,C++,Struct,地址: 其代码如下: // Declare a DateStruct variable DateStruct sToday; // Initialize it manually sToday.nMonth = 10; sToday.nDay = 14; sToday.nYear = 2020; // Here is a function to initialize a date void SetDate(DateStruct &sDate, int nMonth, int nDay,

地址:

其代码如下:

// Declare a DateStruct variable
DateStruct sToday;

// Initialize it manually
sToday.nMonth = 10;
sToday.nDay = 14;
sToday.nYear = 2020;

// Here is a function to initialize a date
void SetDate(DateStruct &sDate, int nMonth, int nDay, int Year)
{
    sDate.nMonth = nMonth;
    sDate.nDay = nDay;
    sDate.nYear = nYear;
}

// Init our date to the same date using the function
SetDate(sToday, 10, 14, 2020);
这项研究的目的是什么

DateStruct&sDate

函数签名中的参数,尤其是在函数体中看不到它的用法


谢谢。

它表示对现有DateStruct实例的引用。

它表示对现有DateStruct实例的引用。

它表示将把对DateStruct的引用作为第一个参数,并且该引用将在函数体中被称为sDate。 然后在正文的每行中使用sDate参考:

sDate.nMonth = nMonth;
sDate.nDay = nDay;
sDate.nYear = nYear;

这意味着它将把对DateStruct的引用作为第一个参数,并且该引用将在函数体中被称为sDate。 然后在正文的每行中使用sDate参考:

sDate.nMonth = nMonth;
sDate.nDay = nDay;
sDate.nYear = nYear;

前面提到的突出显示的代码被调用。您可能认为引用是变量的别名

在函数调用期间,sDate成为sToday的别名,sToday已作为参数提供。因此,可以从函数中修改sToday

原因是它可以提供复杂的结构,这些结构可能在被调用的函数中填充数据、修改等

在您的例子中,SetDate函数采用单独的年、月和日,并将其打包在sDate==sToday结构中

只需将您需要提及的所有结构成员的第一种初始化方式与调用SetDate函数进行比较

例如:


将此与手工填充所有这些janFirst和decLast结构时编写的代码量进行比较

调用上述突出显示的代码。您可能认为引用是变量的别名

在函数调用期间,sDate成为sToday的别名,sToday已作为参数提供。因此,可以从函数中修改sToday

原因是它可以提供复杂的结构,这些结构可能在被调用的函数中填充数据、修改等

在您的例子中,SetDate函数采用单独的年、月和日,并将其打包在sDate==sToday结构中

只需将您需要提及的所有结构成员的第一种初始化方式与调用SetDate函数进行比较

例如:


将此与手工填充所有这些janFirst和decLast结构时编写的代码量进行比较

请阅读一本书。这是在文章的另一个地方写的:……我们需要将结构本身作为第一个参数传递给SetDate函数。否则,SetDate将不知道我们要处理什么DateStruct。请阅读一本书。这是在文章的另一个地方写的:…我们需要将结构本身作为第一个参数传递给SetDate函数。否则,SetDate就不知道我们要处理什么DateStruct。。