c语言可变数组的实现
来源:互联网 发布:阿里云 ecs 编辑:程序博客网 时间:2024/06/05 05:28
/*可变数组*//**创建返回指针类型**/#include<stdio.h>#include<stdlib.h>typedef int Ele;const Ele ERROR=0;typedef struct Array{Ele *data;int size;}*Arr;Arr createarr(int size){Arr arr=(Arr)malloc(sizeof(struct Array));arr->data=(Ele*)malloc(sizeof(Ele)*size);arr->size=size;return arr;}void More(Arr arr,int more){ if(arr==NULL) return;Ele *p=(Ele*)malloc(sizeof(Ele)*(arr->size+more));for(int i=0;i<arr->size;i++){p[i]=arr->data[i];}free(arr->data);arr->data=p;arr->size=arr->size+more;}void print(Arr arr){ if(arr==NULL) return;for(int i=0;i<arr->size;i++){printf("%d ",arr->data[i]);}}void freearr(Arr *parr){ if(parr==NULL) return; if(*parr==NULL) return;free((*parr)->data);free(*parr);*parr=NULL;}Ele getarr(Arr arr ,int x){if(arr==NULL) return ERROR;return arr->data[x];}void setarr(Arr arr,int x,Ele e){if(arr==NULL) return;arr->data[x]=e;}int main(){Arr arr=createarr(10);print(arr);printf("\n");More(arr,20);print(arr);printf("\n");setarr(arr,5,888); print(arr);}
/*可变数组*//*返回不返回指针类型**/#include<stdio.h>#include<stdlib.h>typedef int Ele;const Ele ERROR=0;typedef struct Array{Ele *data;int size;}Arr;Arr createarr(int size){Arr arr;arr.data=(Ele*)malloc(sizeof(Ele)*size);arr.size=size;return arr;}void More(Arr *arr,int more){ if(arr==NULL) return;Ele *p=(Ele*)malloc(sizeof(Ele)*(arr->size+more));for(int i=0;i<arr->size;i++){p[i]=arr->data[i];}free(arr->data);arr->data=p;arr->size=arr->size+more;}void print(const Arr *arr){//传指针好,只会申请一个指针类型的临时!如果传结构体本身,则申请一个结构体类型的临时变量----(传值传递形参是实参的备份)//引申:C++中引用传递形参变量和实参变量对应内存中同一块空间 if(arr==NULL) return;for(int i=0;i<arr->size;i++){printf("%d ",arr->data[i]);}}void freearr(Arr *arr){ free(arr->data);//释放指针指向的堆空间arr->data=NULL;arr->size=0;}Ele getarr(const Arr *arr ,int x){if(arr==NULL) return ERROR;return arr->data[x];}void setarr(Arr *arr,int x,Ele e){if(arr==NULL) return;arr->data[x]=e;}int main(){Arr arr=createarr(10);print(&arr);printf("\n");More(&arr,20);print(&arr);printf("\n");setarr(&arr,5,888); print(&arr);}
1 0
- c语言可变数组的实现
- c语言实现简单可变数组
- c语言 可变数组
- C语言 可变长度的数组 -2
- C语言可变参数函数的实现
- C语言可变参数函数的实现
- C语言可变参数的函数实现
- c语言中可变参数的实现
- C语言可变参数的实现详解
- C语言中可变参数的实现
- C语言可变参数的实现详解
- C语言可变参数的实现机制
- C语言可变参数函数的实现
- C语言中可变参数的实现
- C语言可变参函数的实现
- C语言可变参数函数的实现
- 实现可变长数组的数组-征服C指针
- C实现可变长数组
- 1.9数据总线
- Nginx实战(一) 虚拟主机
- 1.10控制总线
- 检测点1.1
- TCP和UDP的最完整的区别
- c语言可变数组的实现
- Google是如何做测试的?
- TCP和UDP的C代码编写流程
- 蓝桥 振兴中华
- Android--数据存储方式--文件的保存和获取存储用户信息--《便签》
- POJ NOI MATH-7831 计算星期几
- 逆序对(字符串,只包含ABCD字符)
- 欢迎使用CSDN-markdown编辑器
- #ifdef Macro_Value 等价于 #if defined (Macro_Value)