朴孝信雪之花百度云:C++动态存储分配的问题

来源:百度文库 编辑:高考问答 时间:2024/04/28 15:03:17
在C++ 中什么时候需要动态存储分配?

这两条程序为什么一条需要动态存储分配?一条不用?

#include<iostream.h>
void main(){
char *str1,*str2;
str1=new char[100];
str2=new char[100];
cin.getline(str1,100);
for(int i=0;*(str1+i)!='\0';i++)
*(str2+i)=*(str1+i);
*(str2+i)='\0';
cout<<"*str1:"<<str1<<endl;
cout<<"*str2:"<<str2<<endl;
delete []str1;
delete []str2;
}

#include<iostream.h>
void main()
{
char str1[100], str2[100];
int i;
cin.getline(str1, 100);
for(i=0; str1[i]!='\0'; i++)
str2[i] = str1[i];
str2[i]='\0';
cout<<"str1: "<<str1<<endl
<<"str2: "<<str2<<endl;
}

不明白呀,有谁能教教我?

动态分配内存用于不知道数组的长度情况下,
根据不同情况生成不同长度的数组.
比如说你要用一个数组a[N],但是这个N是未知的,这种情况用动态分配内存

#include<iostream.h>
void main(){
char *str;
int N;
scanf("%d",&N);
str=new char[N];
delete []str;
}