#include<algorithm>
#include<iostream>
using namespace std;
bool cmp(int x, int y) {
return x > y;
}
int main()
{
int arr[] = { 2,4,5,3,1 };
sort(arr, arr + 5, cmp);//和greater的用法一样,都是从大到小,自定义cmp
//sort(arr, arr + 5, greater<int>());//从大到小
cout << "从大到小排列为:";
//cout << arr; 这样子是错误写法,返回的不是54321,而是arr数组的地址
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
char arr1[] = { 'd','c','a'};
sort(arr1, arr1 + 3);
cout << "从小到大排列为:";
for (int i = 0; i < 3; i++) {
cout << arr1[i] << " ";
}
return 0;
}
//在 C++ 里,全局数组(定义在 main 函数外的数组,像你代码里 int B[7]; 这种)会默认初始化为 0 ;但如果是局部数组(定义在函数内,比如 main 里定义的数组) ,不会自动初始化为 0 ,元素值是随机的“垃圾值” 。
//你代码里 int B[7]; 写在 main 前面,属于全局作用域的数组,C++ 规则就是:全局(包括 static 修饰的静态局部)的基本数据类型数组,会默认用 0 初始化每个元素。所以 B 里的 7 个 int 元素,都会是 0 ,可以直接拿来统计计数,不用额外手动初始化 。
//简单说:全局数组( main 外定义)默认全 0 ,局部数组( main 或其他函数内定义)不默认初始化,值随机~