c++指针,动态数组,动态分配内存空间,这图片里写的怎么做啊
有人会吗
啥意思
就是 改为
int n;
cin>>n;
double * p = (double*)malloc(n*sizeof(double));
或者 double *p = new double[n];
根据输入的n来使用malloc来动态申请内存,然后计算完成后用free释放即可。一个测试的例子如下, 供参考:
#include <iostream>
#include <stdlib.h>
using namespace std;
int DynamicTest(int *p ,int n){
for(int i=0;i<n;i++){
cout<<"请输入第"<<i+1<<"个数:";
cin>>p[i];
}
int temp;
for(int i=0;i<n-1;i++){
for(int j=i;j<n;j++){
if(p[i]>p[j]){
// printf("排序数组\n");
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
cout<<"排序后的数据为:"<<endl;
for(int i=0;i<n;i++){
cout<<p[i]<<" ";
}
cout<<endl;
// printf("in DynamicTest,p=%p,p==NULL:%d\n",p,p==NULL);
return 1;
}
int main(void){
int n;
cout<<"请输入要排序数字的个数(输入0退出):";
cin>>n;
int * p = NULL;
int preN=0;
while(n!=0){
if((p!=NULL && n > preN) || (p==NULL)){
if(n>preN&&p!=NULL){
cout<<"内存不够,进行扩容!" <<endl;
}
if(p==NULL){
cout<<"初识扩容!"<<endl;
}
if(p!=NULL&& n > preN){
// cout<<"n="<<n<<",preN="<<preN<<endl;
cout<<"内存不够,释放原内存,开始申请新内存空间!"<<endl;
free(p);
}
p = (int *)malloc(sizeof(int)*n);
if(p!=NULL){
cout<<"申请内存成功!"<<endl;
}
}
preN = n;
DynamicTest(p,n);
cout<<"请输入要排序数字的个数(输入0退出):";
cin>>n;
}
return 0;
}