#include
using namespace std;
//总结: 当数组名传入到函数作为参数时,被记作为指向首元素的指针
//表示接收的两种形式: void bubble(int *arr, int len) || void printArray(int arr[], int len) 均可以修改实参,只要传入的指针就可以修改
// 冒泡排序 参数1 数组的首地址 参数2 数组的长度
void bubble(int *arr, int len) //[int *]是类型,arr才是指针变量,此处可以修改为void bubble(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{ // 数组内的元素存在两种访问方式,第一种 arr[j] 正常数组访问元素的方式([]可以访问对应索引的值) || 第二种是通过指针解引用的方式 *(arr+j) arr代表首地址(即数组名)
//方法1
// if (arr[j] > arr[j + 1])
// {
// int temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
//方法2
if (*(arr+j) > *(arr+j+1)) // 纯指针的方式,直接用 *(arr+j) 来通过指针访问数组内的元素
{
int temp = *(arr+j);
*(arr+j) = *(arr+j+1);
*(arr+j+1) = temp;
}
}
}
}
//打印数组函数
void printArray(int arr[], int len) // arr[]代表的是接收首地址指针,而[]则更能让别人理解为此处是数组的地址,该函数也可以修改实参 此处可以修改为 void printArray(int *arr, int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << endl;
}
arr[0] = 100;
}
int main() {
//1、先创建数组
int arr[10] = { 4,2,8,0,5,7,1,3,9,6 };
//2、数组长度
int len = sizeof(arr) / sizeof(arr[0]);
//3、调用bubble函数进行排序
bubble(arr,len); // 注意,数组名arr就是首地址 此处可以修改为 &arr[0]
printArray(arr, len); // arr也可以代表这个整体的数组,传入printArray函数,亦可以代表arr数组的首地址
cout << endl << arr[0] << endl; // 100,均可以修改实参
system("pause");
return 0;
}