c语言之一维数组
数组:若干同类型变量的集合。通过下标访问,数组是由连续的内存构成,最低地址对应首元素,最高地址对应末元素。
一般形式:
type name[size]
例子:
int main(void)
{
int arr[10];
int i;
for (i=0;i<10;i++)
{
arr[i]=i;
}
for(i=0;i<10;i++)
{
printf("arr[%d] is %d \n",i,arr[i]);
}
getch();
return 0;
}
结果:
arr[0] is 0
arr[1] is 1
arr[2] is 2
arr[3] is 3
arr[4] is 4
arr[5] is 5
arr[6] is 6
arr[7] is 7
arr[8] is 8
arr[9] is 9
我们从例子中看到,数组的下标是从0开始的。
c语言不检查数组边界,应该自己检查数组边界。
c99和c89不同,c99是在运行的时候确定数组的大小。
c89是在编译的时候确定数组的大小。
形参使用数组:
实参只能使用不带下标的数组名向函数传入数组指针。如例子中的fun1(arr);不能使用
其它形式。
例如:
void fun1(int *arr);
void fun2(int arr[]);
void fun3(int arr[3]);
int main(void)
{
int arr[3];
int i;
for (i=0;i<3;i++)
{
arr[i]=i;
}
fun1(arr);
fun2(arr);
fun3(arr);
getch();
return 0;
}
void fun1(int *arr)
{
int i;
for(i=0;i<3;i++)
{
printf("fun1 arr[%d] is %d \n",i,arr[i]);
}
}
void fun2(int arr[])
{
int i;
for(i=0;i<3;i++)
{
printf("fun2 arr[%d] is %d \n",i,arr[i]);
}
}
void fun3(int arr[3])
{
int i;
for(i=0;i<3;i++)
{
printf("fun3 arr[%d] is %d \n",i,arr[i]);
}
}
函数的形参定义共三种方法,上例子给出了详细的定义方式。
三种效果是一样的。