C++程序:输入n个数,将这些数从大到小排列输出
#include<iostream>
#include<window.h>
using namespace std;
int main()
{
//指定数组长度
int n;
cin>>n;
//动态分配内存
int* p=new int[n];
//顺序输入
for(int i=0;i<n;i++)
cin>>p[i];
//冒泡排序
int t=0;
for(int i=1;i<n;i++)
for(int j=0;j<i;j++)
{
if(p[j]<p[j+1])
{
t=p[j];p[j]=p[j+1];p[j+1]=t;
}
}
//顺序输出
for(int i=0;i<n;i++)
cout<<p[i];
return 0;
}
动态分配内存
int* p=new int[n];
原因:
动态分配 n 个i连续nt型的空间。
可以理解为 申请一个 长度为n 数组名为p的 int型数组。
只是和普通数组相比他的长度可以在运行时指定,增加编程的灵活性,减少空间浪费。
不然就只能分配足够大的,例如初学时int p[80] 。
为什么要使用动态内存分配来实例化一个类:
1.可以动态的申请空间,以便动态确定对象所需要的内存;
2.便于储存大型对象,通常情况下栈区的大小容不下过于庞大的对象;
3.传递指针比传递整个对象更方便高效;
举几个生动形象的例子解释以上三条原因:
- 每个人都要吃盐,盐不够了再去买显然比把这辈子要吃的盐一次性买下来要明智;
- 如果你是卖盐的,储存了很多盐,你只需要建一个仓库把盐放进去,然后自己记住仓库地址即可,而不需要把盐全部放在自己的家中;
- 如果要去很远的地方谈卖盐的生意,只需要选一些有代表性的信息(地址)给对方就可以了,不需要把整个仓库搬过去给对方看。