08 指针、数组和函数
这是一个大杂烩。
描述:封装一个函数,利用冒泡排序,实现对整型数组的升序(或者降序,喜欢哪个用哪个)的排序。
#include<iostream>
using namespace std;
void fun1(int* arr, int cd);
int main()
{
int arr[] = { 4, 3, 6, 2, 1, 7, 8, 0, 9, 5 };
int cd = sizeof(arr) / sizeof(arr[0]);
fun1(arr, cd);
for (int i = 0;i < cd; i++)
{
cout << arr[i] << endl;
}
system("pause");
return 0;
}
void fun1(int *arr, int cd)
{
for (int i = 0;i < cd - 1;i++)
{
for (int y = 0;y < cd - i - 1;y++)
{
if (arr[y] > arr[y + 1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y + 1] = temp;
}
}
}
}
注意:如何传入一个数组?int * arr
。
给函数传入一个数组的方式:直接 arr,然后在函数里面可以解引用,接着就可以像普通的数组一样操作了。
#include<iostream>
using namespace std;
void fun2(int* p,int cd);
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int cd = sizeof(arr) / sizeof(arr[0]);
fun2(arr,cd);
system("pause");
return 0;
}
void fun2(int* p,int cd)
{
for (int i = 0;i < cd; i++)
{
cout << p[i] << " ";
}
}
运行结果:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
1 2 3 4 5 6 7 8 9 0 请按任意键继续. . .
为什么这样操作:
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int cd = sizeof(arr) / sizeof(arr[0]);
cout << arr << " ";
system("pause");
return 0;
}
如果我们直接打印一个数组arr
那么返回的是数组的首地址!!!
我们运行一下:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
000000851F98FBD8 请按任意键继续. . .
所以必须解引用才可以传入数组!!!
:-)