我们经常在函数内部要动态生成一个数组,这里列出常用的两种方法。下面通过把original[3]复制给一个新的数组copyversion来说明。
1.用vector
#include<iostream>
#include<vector>
using namespace std;
void copy(int original[],int n){
vector<int> secondchild;
for(int i = 0; i < n;i++)
secondchild.push_back(original[i]);
}
int main(){
int a[3] = {1,30,400};
copy(a,sizeof(a)/sizeof(a[0]));
return 1;
}
<span style="font-size:18px;">#include<iostream>
using namespace std;
void copy(int original[],int n){
int *secondchild = new int[n];
for(int i = 0; i < n;i++)
secondchild[i] = original[i];
}
int main(){
int a[3] = {1,30,400};
copy(a,sizeof(a)/sizeof(a[0]));
return 1;
}
</span>
-------------------------------我是分割线------------------------------------
4.22更新
今日突然发现,如果是要动态生成一个字符数组的话呢,不需要说明数组的长度,但是声明一个数字数组,就一定要声明数组的长度。
//将字符数组转为数字
#include<iostream>
#include<stdio.h> //头文件
using namespace std;
int main(){
int n;
char* str = new char[];
cin>>str;
n = atoi(str);
cout<<n;
cout<<strlen(str); //计算字符数组的长度
return 1;
}
以及,上面可以直接把str打印出来,就是整个字符数组的值,非常像字符串。但如果是数字指针的话,打印出来就是一个地址的值。