数组的定义:
类型符+数组名+[常量表达式]
int ar[n] n的值不能为空,必须为正整数且在编译时需要确定它的值
void main()
{
int ar1[5]={};
int ar2[]={1,2,3,4,5};
int ar3[5]={1,2,3};
}这些定义都是正确的
数组下标的引用;
sizeof(ar) 表示整个数组的大小
所以数组中元素的个数可以表示为 n=sizeof(ar)/sizeof(ar[0]);
&ar 所取的是整个数组的首地址,在其他情况下 ar表示数组首元素地址
数组和指针的区别
数组对于数据是直接访问,而指针对数据是间接访问
数组一般存在于内存的栈区,所以在C语言中只是一组同类型的普通变量,即使这个变量可能是指针。所以它的作用比指针小很多,指针可以指向任何区的任何数据。所以在一些情况下,数组名只是指针的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度,而且数组在定义时就有了自己的内存,一般指针如果未指向一个内存块时,它是没有内存的,即所谓的野指针。
总结:
数组不能进行ar=NULL操作,也不能ar++,ar--,但指针可以。
ar[i]=》*(ar+i),所以在编译时ar[i]和i[ar]会被编译为*(ar+i)和*(i+ar)i,都能编译通过。
数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。
访问数组中的元素,可以用数组ar[i],也可以用指针p[i].