一、数组
1.数组是由同一种数据类型的元素系列构成的。其格式为 数据类型 数组名[元素的个数] 。
2.当数值数目少于数组元素数目时,多余的数组元素会被初始化为0,即未被初始化的元素则被设置为0。当初始化列表中项目的个数大于数组大小时,编译器会报错。在对数组初始化时如果多次对一个元素进行初始化,则最后一次有效。
3.对数组使用const,即只对数组进行读取数值而不写入数值。这样程序会把每个元素当做是常量,而不能在对其进行赋值。
4.在对数组进行赋值时。不允许把整个数组当做一个整体来进行赋值。同时数组的计数是从0开始的,即a[0]、a[1]....
二、数组和指针
1.数组名同时也是该数组首元素的地址,即flizny == &flizny[0]
2.dates+2 == &date[2] dates 即数组名相当于&date[0] dates + 2相当于在首元素加上2后对应元素的地址即&date[2]
3.两个表达式ar[i]和*(ar+i)的意义是等价的,即表示数组中第i个元素的值。
三、指针和多维数组
int zippo[4][2];表示一个四行两列的数组,也相当于是数组的数组。
1.zippo的首元素包含两个int的数组,所以zippo是包含了两个int的数组的地址。即zippo是地址的地址。对其需要取两次值才可以得到其对应的数值(**zippo)。
对其取两次值得形式可以两次使用间接运算符(*)来实现,或两次使用方括号([])(也可以采用一次*和一次[]来实现)。
2.如果只对其取一次值(*zippo),则只会获得首元素的地址,相当于*zippo = &zippo[0][0];
3.int (*pz)[2];和int *pax [2];两者是不同的。 前者表示pz指向一个包含2个int值的数组,后者表示pax是由两个指向int值得指针所构成的数组。
4.在声明N维数组的指针时,除了最左边的方括号可以留空外,其他都需要填写数值。
int sum(int ar[][],int rows);是错误的
int sum(int ar[][4],int rows);是正确的。这是因为首方括号表示这是一个指针,而其他方括号描述的是所指向对象的数据类型。