0
点赞
收藏
分享

微信扫一扫

C语言学习之数组

一脸伟人痣 2022-01-22 阅读 67

本篇文章将介绍C语言中的数组以及应用

概念

数组 就是一组相同类型元素的集合
数组创建时括号里是常量表达式
变长数组C99语法才支持

数组的创建与初始化

请看下面代码 数组的创建

	int arr1[8];
	char arr2[5];

int数组初始化 不完全初始化的时候 int类型数组后面默认补0

	//完全初始化 
	int arr3[10] = {1,2,3,4,5,6,7,8,9,10};
	//不完全初始化
	int arr4[10] = {1,2,3}; //剩下的全是0
	//根据初始化内容确定数组大小
	int arr5[] = {1,2,3,4,5};

char类型数组初始化 不完全初始化后面默认补\0

	char ch1[5] = {'h','i'}; //剩下的默认是'\0'
	char ch2[] = {'h','i'}; //这样写没有'\0'
	char ch3[5] = "hi"; //后面默认全是'\0'
	char ch4[]  = "hi"; //后面也会跟一个'\0' 

数组的访问

访问数组用的是下标引用操作符 请看下面的代码

	int arr[10] = {0};
	arr[4] = 5; //下标引用操作符
	printf("%d\n",arr[4]);
	//数组个数计算
	int len = sizeof(arr)/sizeof(arr[0]);
	printf("%d\n",len); 

一维数组在内存中的存储

请看以下代码 %p是打印地址

	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int i = 0;
	for(i = 0 ; i < 10 ; i++){
		printf("arr[%d]===%p\n",i,&arr[i]);
	} 

最后结果是这样的

	arr[0]===000000000062FDF0
	arr[1]===000000000062FDF4
	arr[2]===000000000062FDF8
	arr[3]===000000000062FDFC
	arr[4]===000000000062FE00
	arr[5]===000000000062FE04
	arr[6]===000000000062FE08
	arr[7]===000000000062FE0C
	arr[8]===000000000062FE10
	arr[9]===000000000062FE14

可以发现 一维数组在内存中是连续存放的
随着数组下标的增长 地址是由低到高变化的
所以我们访问数组的时候也可以用指针访问 请看下面代码

	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int* p = arr; //数组名是首元素的地址
	int i = 0;
	for(i = 0 ; i < 10 ; i++){
		printf("%d\n",*p);
		p++;
	} 

二维数组

二维数组中的元素都是数组元素
二维数组的创建

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

初始化

	//初始化 
	int arr1[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 
	//不完全初始化
	int arr2[3][4] = {1,2,3,4,5}; //后面默认补0
	//另一种不完全初始化 
	int arr3[3][4] = {{1,2},{3,4},{4,5}};
	//二维数组的行可以省略 列不可以省略
	int arr4[][4] = {{2,3},{4,5}};

二维数组在内存中的存储也是连续存储的

	int i = 0;
	int* p = arr4;
	for(i = 0 ; i < 12 ;i++){
		printf("%d\n",*p);
		p++;
	}

冒泡排序

void bubble_sort(int arr[],int len){
	int i = 0;
	int j = 0;
	for(i = 0 ; i < len-1 ; i++){
		for(j = 0 ; j < len-1-i ; j++){
			if(arr[j] > arr[j+1]){
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}
举报

相关推荐

0 条评论