数组
数组的定义及初始化:
int n = 5;
int a[n] = {1,2,3,4,5};
-
注意:数组一旦给定,a就与这块内存匹配不可改变,也就是a++,–a,这些都是不对的。
sizeof(a)的值在32位系统下是20.
sizeof(a[0])在32位系统下是4.
sizeof(a[5])在32位系统下也是4.
//sizeof在32是关键字不是函数,函数求值是在运行的时候,而关键字sizeof求值是在编译的时候
sizeof(&a[0])的值为4,取元素a[0]的首地址
sizeof(&a)的值也是4,取数组a的首地址 -
&a[0]和&a的区别
a[0]是一个元素,a是整个数组,虽然&a[0]和&a的值是一样的,但意义不一样
前者是数组首元素的首地址,而后者是数组的首地址(陕西省省政府在西安,西安市政府也在西安) -
数组名能否作为左值和右值呢??
1,数组名不能作为左值。当数组名是左值时,编译器会认为数组名是数组首元素的首地址,而这个地址开始的一块内存是一个整体,我们只能访问数组中的某个元素,而不能把数组当成一个整体进行访问。
我们可以吧a[i]当做左值,而无法把a当做左值
2, 数组名可以作为右值,作为右值时,表示的数组首元素的地址。 -
数组名有两种情况代表的是整个数组:
1、sizeof(arr)//整个数组的字节大小
2、&arr+1;//数组最后一个元素的后面 -
访问数组当中元素的方法:
1、可以通过下标去访问
2、通过指针的形式访问