1,数组如何作为参数传递?
数组作为参数传递给函数和将指向数组中第一个元素的指针传递给函数是完全等价的,将数组作为参数传递给函数时可采用值传递和地址传递 ,前一种需要完整复制初始数组,很安全,后一种则速度较快。
2,结构体字节对齐的细节和具体编译器实现相关,但一般而言满足三个准则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}
3,指针或带下标的数组名都可以访问元素,哪一个更好?
前者要确定数组的地址,因此需要将i和类型x的大小相乘再与数组a中第一个元素的地址相加;后者只需间接引用指针p,间接引用快,
4 数组
一个数组是一个对象,而它的数组名就是指向这个对象的第一个元素的指针。
5 函数的数组参数并不是真正的数组,而是指针。
6 字符串和数组有什么不同?
数组的元素可以是任意一种类型,而字符串是一种特别的数组,它是使用了确定的长度,
7 传递数组指针
当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值进行函数,
在值传递过程中,被调函数参数值的更改不能改变实参值的更改,但是地址传递会导致实参值的更改