今天我们来看一下如何动态地创建一维数组,同时可以灵活的指定要创建的数组类型。这里就需要预定义类型:#difine XX 数组类型。计算机在编译代码的的时候进行预处理就会将XX置换为你所定义的数组类型。下面是我的代码:
#include "stdafx.h"
//预定义ARRTYPE即要创建的数组类型
#define ARRTYPE char
void* create(int n)//为数组分配空间
void input(ARRTYPE* arr,int n)//输入数组数据
void ouput(ARRTYPE* arr,int n)//输出数组数据
int main(int argc, char* argv[])
{
int length;
cout<<"请输入您想要创建数组的长度 :";
cin>>length;
ARRTYPE *arr;
arr=(ARRTYPE *)create(length);
input(arr,length);
ouput(arr,length);
return 0;
}
void* create(int n){
return new ARRTYPE[n];
}
void input(ARRTYPE* arr,int n){
cout<<"输入数组的"<<n<<"个元素:";
for(int i=0;i<n;i++){
cin>>arr[i];
}
}
void ouput(ARRTYPE* arr,int n){
cout<<"数组的元素为: ";
for(int i=0;i<n;i++){
cout<<arr[i]<<' ';
}
}
运行结果:
详细剖析:
在代码中,首先声明了三个函数,其中create()函数用来动态为数组分配内存,input()函数用来从键盘输入数据给数组,ouput()函数用来输出数组元素。主函数里面首先定义了一个变量来接收用户输入的数字来确定数组的长度,然后定义了一个ARRAYTYPE类型的指针,通过预处理转化为char类型,调用create()函数,传入参数为数组的长度,然后分配了内存空间分配给char指针,然后做了一个强制转换。通过input(),ouput()函数给数组传值再输出。