1、数组是相同类型的变量的有序集合
2、数组在一片连续的内存空间中存储元素
3、数组元素的个数可以显示或隐式指定
int a[5] = {1, 2};
int b[] = {1, 2};
a[2],a[3],a[4]的值都是0 b包含了两个元素
4、数组地址与数组名
·数组名代表数组首元素的地址
·数组的地址需要用取地址符&才能得到
·数组首元素的地址值与数组的地址值相同
·数组首元素的地址与数组的地址是两个不同的概念
5、数组名的盲点
·数组名可以看做一个常量指针
·数组名"指向"的是内存中数组首元素的起始地址
·在表达式中数组名只能作为右值使用
·只有在下列场合中数组名不能看做常量指针
·数组名作为sizeof操作符的参数
·数组名作为&运算符的参数
6、定义为指针,声明为数组 (错误)
char *p = "Hello World!";
extern char p[];
7、数组小结
·数组是一片连续的内存空间
·数组的地址和数组首元素的地址意义不同
·数组名在大多数情况下被当成常量指针处理
·数组名其实并不是指针,在外部声明时不能混淆
概念的混淆是BUG的根源之一!
2、数组在一片连续的内存空间中存储元素
3、数组元素的个数可以显示或隐式指定
int a[5] = {1, 2};
int b[] = {1, 2};
a[2],a[3],a[4]的值都是0 b包含了两个元素
4、数组地址与数组名
·数组名代表数组首元素的地址
·数组的地址需要用取地址符&才能得到
·数组首元素的地址值与数组的地址值相同
·数组首元素的地址与数组的地址是两个不同的概念
5、数组名的盲点
·数组名可以看做一个常量指针
·数组名"指向"的是内存中数组首元素的起始地址
·在表达式中数组名只能作为右值使用
·只有在下列场合中数组名不能看做常量指针
·数组名作为sizeof操作符的参数
·数组名作为&运算符的参数
6、定义为指针,声明为数组 (错误)
char *p = "Hello World!";
extern char p[];
7、数组小结
·数组是一片连续的内存空间
·数组的地址和数组首元素的地址意义不同
·数组名在大多数情况下被当成常量指针处理
·数组名其实并不是指针,在外部声明时不能混淆
概念的混淆是BUG的根源之一!