一个袖珍C库, 实现一个存储任意数据的数组

[复制链接]
查看11 | 回复1 | 2010-3-13 17:52:08 | 显示全部楼层 |阅读模式
二楼很强大。
回复

使用道具 举报

千问 | 2010-3-13 17:52:08 | 显示全部楼层
/*一个袖珍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;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行