数组

来源:互联网 发布:三国志11 mac 打不开 编辑:程序博客网 时间:2024/05/16 01:43

1、数组声明时清空

int main(){   int a[5] = {0};   //清空   int i = 0;   for(i = 0 ; i< 5 ; i++)       printf("[%d]",a[i]);   # [0][0][0][0][0]   printf("\n");    return 0;}int main(){   int a[5] = {1}; //从第二位开始清空   int i = 0;   for(i = 0 ; i< 5 ; i++)       printf("[%d]",a[i]);  # [1][0][0][0][0]   printf("\n");    return 0;}

2、不指明元素个数的申明

int main(){   int a[] = {1,2,3,4};   int count = sizeof(a)/sizeof(int);   printf("count:%d\n",count);   # count:4 ,编译器隐形设置为4个元素   return 0;}int main(){   char a[] = "strlen(a)=13";     int count = sizeof(a);  #13,隐形设置为13位的字符串,最后一位为'\0'   printf("count:%d\n",count);   return 0;}

3、数组作为函数形参
PS:在形参中定义数组时在数组名后面跟一个空的方括号,有时为了在被调用函数中处理数组元素的需要,可以另设一个参数,传递需要处理的数组元素的个数

int average(int arr[],int n)//int average(int arr[5],int n) 传入arr[5]没有意义,因为C编译器对形参数组大小不做检查,只是检查实参数组的首地址传给形参数组。{    int i=0,ave = 0;    for(i=0;i<n;i++)    {        ave += arr[i];    }    ave /= n;    return ave;}void show(int arr[]){    //此时arr地址=实参a[5]的首地址(固定的),arr在执行过程中是可变的    printf("[%d]",*arr); arr++;    printf("[%d]",*arr); }int main(){   int a[5] = {2,3,4,5,6};   int b = average(a,5);   printf("b:%d\n",b); //b:4   a++;            //无法编译通过,数组首地址是不能变的   show(a);   return 0;}
0 0
原创粉丝点击