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

c++day3 案例 数组,函数,指针

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

c++day3 案例 数组,函数,指针

封装一个函数,利用冒泡排序,实现对整型数组的升序排序

只要传输了数组的首地址,即等于把数组传输进了函数

我的方法(在main函数中进行冒泡排序,每次传输数组中两个数的地址到子函数,然后两个指针的解引用比大小,再互换)

void seq(int *a,int *b )            //定义两个指针,方便接收传输的地址
{
	cout << *a << "  " << endl;     //检测传输过来的地址有没有问题
	cout << *b << "  " << endl;

	if (*a > *b)                     //冒泡排序的互换
	{
		int temp = *b;
		*b = *a;
		*a = temp;
	}
	cout << *a << "  " << endl;     //检测指针的解引用是否有问题
	cout << *b << "  " << endl;
}

int main()
{
	int arr[10] = {100,54,88,675,4,0,3030,92,654,300};
	
	int len = sizeof(arr) / sizeof(arr[0]);     //冒泡排序最好写这个
	for (int i = 0; i < len; i++)
	{
		int *p1 = arr; int *p2; int *p3;     //重点:这里的指针定义必须放在第一个循环里,让p1重新等于首地址
		                                     //不然,在i=1的第二个循环中,p3会是数组最后一位,而p2会是
			              //数组最后一位往后退4个字节,下标不符,变为极大的负数,使数组溢出
		for (int j = 0; j < len-1-i; j++)
		{
			p3 = p1;                  //如果不设p3,p1和p2代表的地址会相同
			p2 = ++p1;				  //++a是先加1后等式,a++是先等式后加1
			seq(p3,p2);				  //这里的p都代表的数组地址,因为是整型数组。p1代表首地址
			                          //p1++即为首地址向后4个字节,就是第二个数的地址
									  //这里将数组两个数的地址传输到子函数的指针上
			cout << "i = " << i << endl;          //检查在第几次循环中出了问题

		}
		
	}
	for (int k = 0; k < 10; k++)
		{
			cout << arr[k] << "  ";
		}
	system("pause");
	return 0;
}

纠错时应一个部分一个部分的看输出是否正确,修改起来会很方便

老师方法(直接将数组传到子函数,然后在子函数中进行冒泡排序)

void seq(int *arr,int len )            //定义了一个指针接收地址,只要传输了数组的首地址,便可 
                                         在子函数中使用数组
{
	for (int i = 0; i < len; i++)
	{
		for (int j = 0; j < len - i - 1; j++)          //冒泡排序标准操作
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
			}
		}
	}
}

int main()
{
	int arr[10] = { 1,54,88,675,4,0,3030,92,654,300 };
	int len = sizeof(arr) / sizeof(arr[0]);            //冒泡排序使用
	seq(arr,len);                          //arr即为数组的首地址,这里传输的是地址
	for (int k = 0; k < 10; k++)
	{
		cout << arr[k] <<"  ";
	}
	system("pause");
	return 0;
}

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

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

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