- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
在程序设计中,为了方便处理,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称之为数组。
在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
数组的几个名词:
1)数组:一组具有相同数据类型的有序的集合
2)数组元素:构成数组的数据。数组中的每一个数组元素具有相同的名称,不同的下标,可以做单个变量使用,也可以称为下标变量。
3)数组的下标:是数组元素的位置的一个索引或指示。
4)数组的维数:数组元素下标的个数,根据数组的维数可以将数组分为一维、二维、多维数组。
数组的分类
按数组元素类型的不同,可以分为:
整形数组:用来存储数值的
字符数组:用来存储字符(即字符串)
指针数组:用来存放指针(即地址)的
结构数组:用来存储一个结构体类型的数据
数组的定义
使用格式:类型 数组名[元素个数]={对应元素}
例如:int arr [5] ={1,2,3,4,5};
数组定义的注意点:数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。第一个数组元素的地址是数组所占内存块的首地址。
命名规范:驼峰标示、起一个有意义的名字。
数组元素的下标从0开始计算。
不能在方括号中用变量来表示元素的个数(c99).
数组的初始化
数组初始化是指在数组定义时给数组元素赋值。
初始化分为:定义的同时初始化或先定义再初始化。
使用变量定义的数组不可以定义数组的同时对数组进行初始化
遍历数组:
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[6]={1,2,3,4,5,6};
for(int i= 0;i<6;i++)
{
printf("%d",arr[i]);
}
return 0;
}
计算数组元素:
当数组长度不确定时,使用sizeof
sizeof运算符可以计算出指定类型的变量所占用的字节数。
一维数组的地址:
数组名代表了数组的首地址,也是数组的第一个元素的地址
数组名是一个常量,存储的就是数组的首地址
每个数组元素的地址,例
char ch[]={'a','b','c','d'};数组的越界问题,定义的数组长度小于使用的长度,造成数组越界,会导致数据丢失
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[3][4]={1,2,3,4,5,6,7,8,9,11,12,13};
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
printf("%d,",arr[i][j]);
}
}
return 0;
}
二维数组的存储方式:
冒泡排序
冒泡排序是一种简单的排序方法,它重复的走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把它们交换过来,走访数列的工作时重复的进行直到没有再需要交换,也就是说数列已经排序完成。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[]={2,4,90,98,63,12,50,38,47,26}
void maopao(int arr[],int len);
maopao(a,10);
for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
void maopao(int arr[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
选择排序
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a[]={2,4,98,90,73,21,56,92};
void xuanze(int arr[],int len);
xuanze(a,8);
for(int i=0;i<8;i++)
{
printf("%d",a[i]);
}
return 0;
}
void xuanze(int arr[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
{
if(arr[i]>arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}