欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P7 数组做函数参数退化问题

程序员文章站 2023-12-31 13:07:40
...
#include <iostream>
using namespace std;
#include <string>

//void printfArray(int a[],int num)
void printfArray(int *a, int num)
{
	int i;
	for (i = 0; i < num; i++)
		cout << a[i] << " ";
}

//void sortArray(int a[],int num)
void sortArray(int *a, int num)
{
	int i, j, tmp;

	int num2 = sizeof(a) / sizeof(a[0]);
	cout << num2 << " ";
	//num2=1;  表明形参a是一个指针
	//实参的a  和 形参的a 的数据类型本质不一样
	//形参中的数组,编译器会把它当成指针处理  这是C语言的特点



	//排序

	//外层循环  当i=0的时候,让j从1===N进行变化
	//外层循环  当i=1的时候,让j从2===N进行变化
	//外层循环  当i=2的时候,让j从3===N进行变化
	for (i = 0; i < num; i++)
	{
		for (int j = i + 1; j < num; j++) //内层循环:a[i]和a[j]比较
		{
			if (a[i] < a[j])
			{
				tmp = a[i];
				a[i] = a[j];
				a[j] = tmp;
			}
		}

	}
}

//数组做函数参数的退化问题   退回一个指针,
//1 结论:把数组的内存首地址和数组的有效长度穿给被调用函数
//2  实参的a  和 形参的a 的数据类型本质不一样
//   形参中的数组,编译器会把它当成指针处理  这是C语言的特点

//3  本质也剖析  形参写在函数上,和写在函数体内是一样的,只不过是具有对外的属性而已


int main()
{
	int i = 0;
	int num = 0;

	
	int a[] = {33,654,4,455,6,33,4,4,5,5,1,4,23,33333332,2};
	num = sizeof(a) / sizeof(a[0]);
	cout << endl;

	cout << "排序之前:" << endl;
	printfArray(a,num);
	cout << endl;
	
	sortArray(a,num);


	cout << "排序之后:" << endl;
	printfArray(a,num);
	cout << endl;

	return 0;
}

 

上一篇:

下一篇: