1 数组定义
T A[ N]
数组的个数在编译时能确定的,不能是变量,可以为常量
注意:大数组要建立在全局区,不要建立在栈内,容易溢出
数组越界在运行时出莫名的错误!!
数组要么建立在静态存储器(全局),要么在栈,数组名对应着一块内存,其地址与容量在生命期不变,只有内容可变(new动态内存建立的不是数组!)
2 数组做形参
数组做形参相当于指针,不能作为返回类型,不能返回函数内建立的数组,数组本身不能复制和拷贝
T f (T a[])
T f (T a[][M])
或者 一维:
T f (T(&p) [N])T f (T(*p) [N])
二维:
T f (T(&p) [M])T f (T(*p) [M])
4 sizeof(a)
这是求数组的容量,就N个数,要是字符串数组,包括\0
char a[]=""hello world";
char *p=a;
string s=a;
sizeof(a)=12
sizeof(p)=4;
sizeof(s)=32;
而
void test(char a[]){
sizeof(a)=4 !
}
5 数组不能复制和拷贝