1,一维数组的定义和初始化:
数组是一组具有相同类型的变量的集合。使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名,构成数组的每个数据项称为数组元素,C程序通过数组的下标实现对数组元素的访问。
数组首先要定义其类型,例如:
int a[5],char a[5]。分别代表整型数组,字符数组。
注意:C语言中数组的下标都是从0开始的。如果对一个数组而言,例如a[5]其下标值为0到4,而不是1到5。
下面举一个简单的例子,输出数组的值:
#include<stdio.h>
int main()
{
int i;
int a[5] = { 1, 2, 3, 4, 5 };
for (i = 0; i <= 4; i++)
printf("%d ", a[i]);
}
i初始化为0,依次读取数组a中的数值并输出。
注意,在定义数组时不能使用变量定义数组的大小,即下面的定义是非法的。
int a[n]; /*不正确的定义方式*/
2,二维数组的定义和初始化
由一维数组的一般定义格式为 类型 数组名[元素个数]如果要定义一个二维数组,只要增加一维下标即可。二维数组的一般定义格式为
类型 数组名 [第一维长度][第二维长度]
一维数组在内存中占用的字节数为:数组长度*sizeof(基类型),二维数组占用的字节数为:第一维长度*sizeof(基类型)。
注意,在不同编译系统中,int所占的字节数是不同的。因此,用sizeof运算符来计算一个类型或者变量在内存中所占的字节数才是最准确可靠的方法,也有利于提高程序的可移植性。
注意,二维数组的长度声明永远都不能省略。
例如:
#include<iostream>
#include<cstring>
using namespace std;
int a[6][6];
int main()
{
int i,j,m,n;
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
{
cin>>a[i][j];
}
}
cin>>m>>n;
for(i=1,j=1;i<=5,j<=5;i++,j++)
{
swap(a[m][i],a[n][j]);
}
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
我们可以在头文件之前定义数组的长度,数组能自动完成初始化,在或者在头文件内定义数组,进行初始化要用头文件#include<cstring>
并对其数组清零
memset(a,0,sizeof(a))
3,排序和查找
排序是把一系列无序的数据按照特定的顺序(如升序或降序)重新排列为有序序列的过程,常见的排序方法有交换法排序,选择法排序,冒泡排序法。在实际编程中,通常用一种更为简便的排序方法:
用头文件#include<algorithm>
sort(a+_,a+_)从数组的指定位数到另一指定位数进行排序,其为左闭右开区间,默认为升序排列。也可自行定义函数,进行其它的选择性排列
注意,当形参被声明为二维数组时,可以省略数组第一维的长度声明,但不能省略数组第二维的长度声明。
C语言数组
最新推荐文章于 2023-10-30 11:20:08 发布