#include <iostream> 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; }