C语言-note8

一、数组

1.数组

1.1 数组

        一组相同类型元素的集合

1.2 数组的创建

      数组类型 数组名[ ];

      示例: int arr[10];

       为支持变长数组, C99之后,数组的大小可以是变量

        变长数组:

                数组的长度(大小)通过变量指定

1.3 数组的初始化

        int arr[10] = {1,2,3,4,5,6,7,8,9,10};

        不完全初始化:

                int arr[5] = {1,2,3};//其余未初始化的部分自动补0

                int arr[ ] = {1,2,3,4,5};

2. 一维数组

2.1 一维数组的创建

         int arr[10];

2.2 一维数组的使用

        数组的下标从0开始

        下标引用操作符:[ ]

        下标范围:0~n-1,或:

                求数组大小:int sz = sizeof(arr) / sizeof(arr[0]);        

                sizeof(arr):总数组大小         //单位是字节

                sizeof(arr[0]):第一个数组大小         //单位是字节

         一维数组在内存中是连续存放的

3. 二维数组

3.1 二维数组的创建

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

3.2 二维数组的初始化

        int arr[3][4] = {1,2,3,4,1,2,3,4,1,2,3,4 };

        int arr[3][4] = { {1,2,3,4},{1,2,3,4},{1,2,3,4}  };

        不完全初始化:

                   int arr[ ][4] =   { {1,2},{3,4} };      //只能省略行,不能省略列

3.3 二维数组的使用

int main()
{
	//定义二维数组,接收数据
	//int arr[3][4] = { 1,2,3,4,1,2,3,4,1,2,3,4};
	int arr1[3][4] = { {1,2,3,4},{1,2,3,4},{1,2,3,4} };

	//输出数据
	int i = 0;
	for (i = 0; i < 3; i++)    //行
	{
		int j = 0;
		for (j = 0; j < 4; j++)    //列
		{
			printf("%d ", arr1[i][j]);
		}
		printf("\n");
	}

	return 0;
}

数组传参,直接给数组名就行:

        示例:bubble_sort(arr1);

将10,9,8,...1冒泡排序(按升序排序):

//定义函数
//数组传参有2种写法:1.数组;2.指针		//形参是数组的形式
void bubble_sort(int arr1[], int sz)	//数组传参,数组接收,[]不可省略;	//接收参数	
//arr本质是指针变量,不是数组	//地址应该用指针接收
{
	//冒泡趟数,与元素个数相关
	//int sz = sizeof(arr1) / sizeof(arr1[0]);	//函数內部不能求sz,函数外部求sz,
	// 以参数形式传过来,形参部分接收

	int i = 0;	//趟数
	for (i = 0; i < sz - 1; i++)
	{
		//一趟
		int j = 0;	//
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr1[j] > arr1[j + 1])	//升序排序	//	相邻元素进行比较
			{
				//交换
				int temp = arr1[j];
				arr1[j] = arr1[j + 1];
				arr1[j + 1] = temp;
			}
		}

	}

}


int main()
{
	//创建数组,接收数据
	int arr1[ ] = { 10,9,8,7,6,5,4,3,2,1 };

	//冒泡排序算法
	//核心思想:两个相邻元素进行比较
	//一趟冒泡排序确定一个元素出现在该出现的位置
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	bubble_sort(arr1, sz);	//传参
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr1[i]);
	}

	return 0;
}

3.4 数组名是什么

        本质是首元素地址

        二维数组的数组名:

                表示第一行的地址,不是[0]]0]的地址

2个例外:

        1. sizeof(数组名)

                表示整个数组,计算整个数组的大小,单位是字节

        2. &数组名

                  表示整个数组,取出整个数组的地址

二、利用数组

1.三子棋

三个文件

        1. test.c           测试逻辑

        2. game.c        代码实现

        3. game.h        代码声明(函数声明、符号定义)

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值