数组运算

数组的集成初始化

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计算数组元素个数;

必须再用另一个参数来传入数组的大小 

 

posted @ 2021-12-02 22:21  泰勒斯儿童营养牙膏  阅读(65)  评论(0)    收藏  举报