C语言学习之数组学习(上篇)

在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。

数组就是在内存中连续的相同类型的变量空间,而且数组属于构造数据类型。

按数组元素类型的不同

数组可分为:数值数组、字符数组、指针数组、结构数组等类别。

int a[10];

char b[10];

按照维数(数组元素下标的个数)的不同,可将数组分为一维数组、二维数组、三维数组、四维数组等。

通常,将二维及以上的数组称为多维数组

数组的组成

数据类型  数组名 [数组元素个数]

a[3]表示含有a[0],a[1],a[2]这三个。

但是数组不支持动态数组,所以数组要指明元素长度。

比如:scanf("%d",&arr[i])

在定义数组的同时进行赋值,称为初始化。全局数组若不初始化,编译器将其初始化为零。

局部数组若不初始化,内容为随机值

int a[10] = { 1, 2, 3 };//初始化前三个成员,后面所有元素都设置为0

数组名是一个地址的常量,代表数组中首元素的地址

	printf("a = %p\n", a);
	printf("&a[0] = %p\n", &a[0]);

这两个打印出来是同个东西。

数组的经典应用:冒泡排序

void Button(int arr[],int len)

{

int i,temp,j;

for(i=0;i<len-1;i++)

{

for(j=0;j<len-i-1;j++)//降序  如果将<改为>则就说升序

{

if(arr[j]<arr[j+1])

{

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

函数名还可以改为:void Button(int *arr,int len)可以退化成为指针类型。

二维数组

int arr[4][3];// 4是行  3是列

每一行相加:

for(i=0;i<4;i++)

{
 for(j=0;j<3;j++)
{
  sum+=arr[i][j];
  printf("%d\n",sum);
}
 sum=0;//清零操作,不影响下次操作
}

每一列相加:

for(j=0;j<3;j++)
{
    for(i=0;i<4;i++)
    {
      sum+=arr[i][j];

    }
    sum=0;
}

猜你喜欢

转载自blog.csdn.net/qq_60043905/article/details/126280271
今日推荐