一.一维数组的定义和初始化
1.数组:类型 数组名[ ];
int arr[10]; //定义一个整型数组,数组名为arr,长度为10
int brr[10]={1,2,3,4,5,6,7,8,9,10};
int err[]={1,2,3,4,5,6,7,8,9,10};//[]中默认为10
局部变量:定义在函数内部的变量包括数组,默认值为随机值
若数组只初始化一部分则剩余部分为0
常见错误:
int err[2]={1};
printf("%d\n",err[0]/err[1]);//错误,除0
int brr[10]={1,2,3,4,5,6,7,8,9,10,11};//错误,设定项太多
int frr[];//错误
int arr[10];
arr[10]=20;//数组越界,无10号下标
二.一维数组下标访问
在定义数组时[表达式]; 表达式为长度,必须为常量
在使用数组时[表达式]; 表达式为下标,可以为常量也可以为变量
常量:不能改变的量,比如10,1+2,‘a’
变量:能改变的量,比如int a; float b;
三.数组越界
四.一维数组的应用
例.对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求对数组进行反转
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int len=sizeof(arr)/sizeof(arr[0]);
int tmp;
for(int i=0,j=len-1;i<j;i++,j--)
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
for(int i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
求数组长度:sizeof(arr):4*10
sizeof(arr[0]):4
sizeof(arr)/sizeof(arr[0])=10
1)数组名作为参数传递时只标记数组的开头(它只是指针)没有记录长度(不知道结尾处)
2)数组名表示整个数组只有如下情况:
1》在定义数组的同一个函数中,求sizeof(arr),表示求数组arr占用的字节数
2》在定义数组的同一个函数中,&arr+1,表示加整个数组大小的其他情况数组名arr都表示数 组的起始地址(指针)