C语言学习:数组

一维数组的定义:
int x[6];                                    //元素个数为6个。x[0]~x[5]
float a[8],b[18];
char c[9];

int x=10;
int a[x];           //这种写法是错误的!!

#define N 10
int a[N];         //这种写法是正确的!!

int a[4]={0,1,2,3};
int a[]={0,1,2,3};   //对全部数组元素赋值可以不指定数组长度
int a[4];                 //没有赋值,其值可能不是0.
int a[4]={0,1};       //相当于int a[4]={0,1,0,0};后面的零不一定。 根据编译器不同而不同。
int a[4]={0};          //相当于int a[4]={0,0,0,0};  
int a[4]={8};          //相当于int a[4]={8,0,0,0}; 不一定后面是0.

如何自动初始化:
int a[10];
int i;
for(i=0;i<10;i++){
  a[i]=i+1;
}

如何通过输入初始化:
int a[10];
int i=0;
while(fflush(stdin),scanf("%d",&a[i])){
  i++;
}

一维数组的引用
a[6]           //是第7个元素
b[i+j]


二维数组
int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11}; 
int a[][2]={0,1,2,3};                //等价于int a[2][2];  对全部数组元素赋值可不指定第一维的长度
int a[3][4];                              //没有赋值,其值可能不为0
int a[3][4]={0};                       //等价于 int a[3][4]={0,0,0,0,0,0,0,0,0,0,0,0};
int a[3][4]={0,1,2};                 //等价于 int a[3][4]={0,1,2,0,0,0,0,0,0,0,0,0};
int a[3][4]={{1},{2},{3}};      //等价于 int a[3][4]={1,0,0,0,2,0,0,0,3,0,0,0};



例子一:数组的初始化以及如何作为函数参数进行调用。
#include <stdio.h>
#define n 5

float evg( int a[]){                        //数组作为函数参数!!!一维数组传递的时候,数字传不过去。所以写[5]、写[]都一样。传进来的实
                                                    际是int 型的指针。如果要知道数组的长度,需要再传一个参数。
    int sum =0;
    float result =0.0;
    for (int i=0;i<n;i++){
        sum+=a[i];
    }
    result=(float)sum/n;                  //这个地方要做强制类型转换。
    return result;
}

int main() {
     int a[n]={2,2,3,4,6};
    float result=0.0;
    result =evg( a);                           //数组在函数中的这么调用!!!注意这个时候不能写a[]、a[n]等。
    printf("result=%06.2f\n",result);    //包含小数点共6位,小数点后2位,不足的用0补齐。
    printf("result=%6.2f\n",result);     //包含小数点,共6位,小数点后2位。
    printf("result=%06.3f\n",result);   //包含小数点共6为,小数点后3位,不足的用0补齐。

    return 0;
}

运算结果:
result=003.40
result=  3.40
result=03.400


例子二:数组作为参数可以将虚参的值传递给实参。
#include <stdio.h>

void fun( int a[]){
     a[0]=90;                            //改变虚参的值!!
    a[1]=90;
}

void main(){
     int score[]={10,20,30,40};
     fun(score);
    for(int i=0;i<4;i++){
        printf("%4d",score[i]);           //打印出的值为90 90 30 40 ,说明数组的值改变了!
    }
}

执行结果:  90  90  30  40







猜你喜欢

转载自blog.csdn.net/pengchengliu/article/details/80472739