一维数组的定义:
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
#define n 5
float evg(
int a[]){
//数组作为函数参数!!!一维数组传递的时候,数字传不过去。所以写[5]、写[]都一样。传进来的实
际是int 型的指针。如果要知道数组的长度,需要再传一个参数。
int sum =0;
float result =0.0;
for (int i=0;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
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