栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础学习 之 数组(4)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础学习 之 数组(4)

数组作为函数参数

将数组作为参数传给函数。

实现一个冒泡排序函数将一个整形数组排序

#include

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

		if (tag == 0)
		{
			return;
		}
	}

}


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

 代码块中的 tag 作为一个标志变量,产生交换时赋予1值,在遍历过程中没有产生交换tag 的值就是为0,代表了整个数组已经有序了不用再进行遍历了。

数组名是什么 
#include
int main()
{

	int arr[] = {1,2,3,4,5,6};
	printf("%pn",arr);
	printf("%pn", arr+1);

	printf("%pn",&arr[0]);
	printf("%pn", &arr[0]+1);

	printf("%pn",&arr);
	printf("%pn", &arr+1);
	return 0;
}

结果:

000000C92EB5F948
000000C92EB5F94C


000000C92EB5F948
000000C92EB5F94C


000000C92EB5F948
000000C92EB5F960

arr , &arr[0], &arr 打印输出的结果是一致,在这arr,&arr[0] 代表了首元素的地址,&arr 代表了整个元素的地址。为什么这么讲呢?当我们给它们每个都加 1的时候,arr 与&arr[0] 地址空间多了4个字节,而&arr 地址多了24位(16进制 48 + 8 变成 50 ,再加上16成 60,8+16 = 24个字节),6个字节,刚好是整个数组的大小。

数组名表示数组首元素的地址。

特殊:

1.sizeof(数组名),计算整个数组的大小,sizeof 内部单独放一个数组名,数组名表示整个数组。

2.&数组名,取出的是数组的地址。&数组名,数组名表示整个数组。

除这两种情况,所有的数组名都表示数组首元素地址。

数组应用实例1:三子棋

Ted-Ya/TicTacToe at master (github.com)

 数组应用实例2:扫雷游戏

Ted-Ya/minesweeper: minesweeper gaming (github.com)

两个很有趣的小游戏,很好的帮助大家理解C 语言中数组的使用,有兴趣的同学可以参考链接中的Demo 来进行练习。

 文章是基于比特鹏哥C语言学习视频的学习笔记,仅用于学习。请勿转载,请勿商用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号