数组运算
数组的集成初始化
int a[] = {2,3,4,22,3,44,55,43,12,4,93};
int a[10] = {2}; //输出结果为 2 0 0 0 0 0 0 0 0 0
集成初始化时的定位
int a[10] = {[0] = 2, [2] = 3, 6, }; //C99 only
用[n]在初始化数据中定位,没有定位的数据跟在前面的位置后面
其他位置的值补0
也可以不给出数组的大小,让编译器算
特别适合稀疏数据的数组
数组的大小
size of 给出整个数组所占据的内容的大小,单位是字节
size of(a)/size of (a[0])
size of(a[0]) 给出数组中单个元素的大小,于是相除就得出数组的单元个数
这样的代码,一旦修改数组中的初始数据,不需要修改遍历的代码
数组赋值
int a[] = {2,3,4,2,3,11,2,3,44,2,43,63,};
int b[] = a; //错误,数组变量本身不能被赋值
要把一个数组的所有元素交给另一个数组,必须采用遍历:
for(i=0, i<length,i++){
b[i] = a[i];
}
遍历数组
通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标
易错点:
循环结束条件是<=数组长度
或
离开循环后,继续用i的值做数组元素的下标(离开循环时,i正好是数组长度,是无效的数组元素下标)
/*找出key在数组a中的位置,
@param key 要寻找的数字
@param a 要寻找的数组
@param length 数组a的长度
@return 如果找到,返回其在a中的位置;如果找不到,返回-1
*/
int search(int key, int a[], int length){
int ret = -1;
int i;
for(i=0; i<length; i++){
if(a[i]==key){
ret = i;
break;
}
}
return ret;
}
数组作为函数的参数时,
不能在[]中给出数组的大小;
不能再用size of计算数组元素个数;
必须再用另一个参数来传入数组的大小

浙公网安备 33010602011771号