结构体数组 C++ Primer Plus(第七章 函数—C++的编程模块)内容精要

电脑杂谈  发布时间:2018-02-09 15:40:06  来源:网络整理

结构体数组做函数参数_结构体数组定义_结构体数组

C++Primer Plus(第七章 函数—C++的编程模块)内容精要

1.??C++对于返回值的类型有一定的限制:不能是数组,但可以是其他任何类型——整数、浮点数、指针,甚至可以是结构和对象!(有趣的是,虽然C++函数不能直接返回数组,但可以将数组作为结构或对象组成部分来返回。)

2.??为什么需要原型:原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型(如果有的话)以及参数的类型和数量告诉编译器。避免使用函数原型的唯一方法是,在首次使用函数之前定义它,但这并不总是可行的。另外,C++的编程风格是将main( )放在最前面,因为它通常提供了程序的整体结构。

3.??仅当有意义时,原型化才会导致类型转换。例如,原型不会将整数转换为结构或指针。

在编译阶段进行的原型化被称为静态类型检查(static type checking)。可以看出,静态类型检查可捕获许多在运行阶段非常难以捕获的错误。

4.?? 用于接收传递值的变量被称为形参。传递给函数的值被称为实参。在函数中声明的变量(包括参数)是该函数私有的。在函数被调用时,计算机将为这些变量分配内存;在函数结束时,计算机将释放这些变量使用的内存。这样的变量也被称为自动变量,因为它们是在程序执行过程中自动被分配和释放的。

5.?? C++将数组名解释为其第一个元素的地址。该规则有一些例外。首先,数组声明使用数组名来标记存储位置;其次,对数组名使用sizeof将得到整个数组的长度(以字节为单位);第三,正如第4章指出的,将地址运算符&用于数组名时,将返回整个数组的地址,例如&cookies将返回一个32字节内存块的地址(如果int长4字节)。

6.?? 根据C++规则,使用int* arr和intarr[]作为形参传入函数,这两个函数头都是正确的,因为在C++中,当(且仅当)用于函数头或函数原型中,int *arr和int arr [ ]的含义才是相同的。它们都意味着arr是一个int指针。

7.?? 将数组作为参数意味着什么:程序实际上并没有将数组内容传递给函数,而是将数组的位置(地址)、包含的元素种类(类型)以及元素数目(n变量)提交给函数,指针本身并没有指出数组的长度。有了这些信息后,函数便可以使用原来的数组。传递常规变量时,函数将使用该变量的拷贝;但传递数组时,函数将使用原来的数组。实际上,这种区别并不违反C++按值传递的方法,sum_arr( )函数仍传递了一个值,这个值被赋给一个新变量,但这个值是一个地址,而不是数组的内容。

8.?? 将数组地址作为参数可以节省复制整个数组所需的时间和内存。如果数组很大,则使用拷贝的系统开销将非常大;程序不仅需要更多的计算机内存,还需要花费时间来复制大块的数据。另一方面,使用原始数据增加了破坏数据的风险。

9.??

结构体数组定义_结构体数组_结构体数组做函数参数

该声明表明,指针ar指向的是常量数据。这意味着不能使用ar修改该数据,也就是说,可以使用像ar[0]这样的值,但不能修改。注意,这并不是意味着原始数组必须是常量,而只是意味着不能在show_array( )函数中使用ar来修改这些数据。

10.指针和const:

通常,将指针作为函数参数来传递时,可以使用指向const的指针来保护数据。结构体数组只要只有一层间接关系,就可以使用这种技术。例如,这里的数组元素是基本类型,但如果它们是指针或指向指针的指针,则不能使用const。

11.函数和二维数组

Data是一个数组名,该数组有3个元素。第一个元素本身是一个数组,有4个int值组成。因此data的类型是指向由4个int组成的数组的指针,因此正确的原型如下:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-69031-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...