减少给调用者(理解成导出吧)函数参数的方法,可将函数定义为一个代理函数,代理函数将调用真正的内层函数完成功能,这样做的好处在设计上使用了分层,参数的检查、转换、传递可由外部代理函数实现,内部函数只需完成功能代码。
编译后生成与CPU相关的二进制目标文件,目标文件与平台是无关的。链接的过程将各目标文件合并生成针对某平台的可执行文件。
数组是同类型数据的集合,在一次编译的语言中(如C/C++),数组的长度定义必须是常量或常量表达式(能在编译前计算出),且数组的赋值只能在定义时,赋值数组的内容可以是常量、变量或函数等。(因为赋值动作是运行时完成的)
线性是逻辑概念,连续是物理描述。
数组换算公式:首地址(指针)+下标(整型)*sizeof(数组类型)。
举例有int a[5] = {1,2,3,4,5}:
那么a[2]等同于2[a],在C语言中[]运行符,接受一个指针与一个整型,前后顺序无关,所以a[2]和2[a]都会转换成上面的公式,算出的地址值是一样的,取值结果都是3。
类似的二维数组被转换成:首地址(指针)+下标1(整型)*sizeof(数组类型[定义的第二维的元素个数])+下标2(整型)*sizeof(数组类型)。如有一个int a[3][5];可知a[1][2]=1[a][2],但不等于1[2][a],编译器是一级一级运算的,先算1[2],发现两个都是整型便会报错了。
其实二维、多维本质上都可以看成一维数组,多维数组只是在逻辑上的概念让人们更容易理解与记忆,在内存中都是以一维数组的形式存储的。