当你要存储1000个字符串,这些字符串少量有1000字符,但大多只有十几个字符,你会不会觉得下面这种方式太浪费了呢?
char ch[1000][1000];
我们的思路是利用指针进行动态内存分配,它需要两个函数的辅助:strlen(char*)和strcpy(char*, char*),他们需要以下头文件
#include<cstring>
1.首先,创建能容纳1000个字符串的数组
可以这样:
char* ch[1000]; //包含1000个char*的数组
也可以这样
char** ch=new char*[1000]; //利用指针创建char*数组,其实跟上面那样差不多
2.有了上面的步骤,就只需要一个这样的临时数组
char temp[1000];
3.假设我们在这样一个for循环内部
for(int i=0; i<1000; i++){
}
写下列代码
cin>>temp;
ch[i]=new char[strlen(temp)+1]; //这里需要+1,否则会缺一个字符,ps:strlen()获取字符数组实际长度
strcpy(ch[i],temp); //将temp复制给ch[i]
动态内存分配new char[]利用strlen()根据字符串实际长度分配内存,来达到不浪费一丁点内存的目的
这个方法适合嵌入式编程,以及对空间要求高的程序
4.忘了说,记得要delete哦,new分配的内存,编译器不会自动给你释放的,注意new和delete一一对应,new有[]的话delete也要有[]