/*一个袖珍C库,实现一个存储任意数据的数组实验目的:1:实现一个长度可扩充的数组;2:实现存放任意类型的数据;3:熟悉相关的指针操作,体会unsignedchar*代表内存的基本存储单元.4:理解C程序如何实现数据类型和围绕数据类型上操作的集合5:为未来理解类实现的数组vector做准备6:理解C中实现范型的基本方法void*,*/#include#include#includevoidvector(void**array,unsignedintsize,unsignedintnum){if(array==NULL)return;/*如果之间有空间,首先释放掉*/if(*array!=NULL){free(*array);*array=NULL;}if(size==0||num==0){*array=NULL;return;}*array=(void*)malloc(size*num);memset(*array,0,size*num);}voidmain(){int*iArray=NULL;unsignedchar*cArray=NULL;intarraySize=0;printf("请输入数组的大小:");scanf("%d",&arraySize);printf("\n");/*可以根据输入大小动态申请数组示例*/vector((void**)&iArray,sizeof(int),arraySize);printf("新生成数组初始化后是:");for(inti=0;i<arraySize;i++)printf("%d",iArray);printf("\n");free(iArray);iArray=NULL;/*unsignedchar"*"代表内存基本存储单元示例有些牵强,只是个demo*/vector((void**)&cArray,sizeof(unsignedchar),arraySize);printf("cArray[0]的地址是:0X%X",cArray);printf("\ncArray[1]的地址是:0X%X\n",&cArray[1]);printf("由上面两个地址值可以看出相差一个字节,说明unsignedchar类型是内存基本存储单元\n");free(cArray);cArray=NULL;} |