C语言笔记: 4.数组


前言


1、数组是什么

数组是一组相同类型元素的集合

2、一维数组

2.1 一维数组的创建

格式:type_t arr_name(const_n);
type_t 是指数组的元素类型
const_n 是一个常量表达式,用来指定数组的大小(不能为变量)
例如

int arr[10]
就是表示创建一个整形的数组,里面一共有10个元素

2.2 一维数组的初始化

例如
int arr[10]={1,2,3,4}
输出arr的时候应该为1234000000

这是一种不完全初始化,剩下没有赋值的元素都默认初始化为0

char arr1[5]={‘a’,‘b’};
char arr2[5]=“ab”

两者输出都是a b 0 0 0
但是在arr2中默认ab后面还有一个\0(用来表示字符串结束),所以说arr2[3]=0这个表示的是‘\0’,后面两位才是默认的0
在arr1中后面三位都是默认的0

2.3 一维数组的大小计算

int arr[];
sz=sizeof(arr)/sizeof(arr[0]);
sz表示的是该数组一共有多少个元素

sizeof与strlen的比较:
sizeof:

  • 计算所占空间的大小
  • 是计算变量、数组类型的大小,单位是字节,是一个操作符

strlen:

  • 求字符串的长度,是在‘\0’处结束,且‘\0’不被算入
  • 只能针对字符串的长度
  • 是一个库函数,要引用头文件string.h

例子:

arr1[]=“abc”;
arr2[]={‘a’,‘b’,‘c’};
sizeof()

3、二维数组

3.1 二维数组的创建

格式:type_t arr_name(const_n1)(const_n2);
const_n1表示行
const_n2表示列
例如

int arr[3][4];
表示的是创建了一个整型的二维数组,有三行四列

3.2二维数组的初始化

int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
int arr[][4] = {{2,3},{4,5}};
二维数组如果有初始化,行可以省略,列不能省略

4、数组应用

(1)冒泡排序
原理:从第一个数开始和后面依次比较,排序过程中总是小数往前放,大数往后放
如:54321—>12345

void BubbleSortMethod(int* arr, int sz)
{

	int i = 0;
	for (i = 0; i < sz-1; i++)
	{
		
		for (int j = i+1; j < sz; j++)
		{
			if (arr[i] >arr[j] )
			{
				int temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}
	
}
int main()
{
	int arr[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	BubbleSortMethod(arr, sz);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	
	return 0;
}

(2)数组逆序
如:123456789----->987654321

void ReverseArr(int* arr, int sz)
{
	int left = 0;
	int right = sz - 1;
	while (left < right)
	{
		int temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}

}
int main()
{
	int arr[10] = { 10,9, 8, 7, 6, 5, 4, 3, 2, 1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	ReverseArr(arr, sz);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

总结

  1. 一维数组和二维数组在内存中都是连续存储的
  2. 二维数组(arr[行][列])是可以省略行,一定不能省略列的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值