清空函数:
memset---->按照字节进行清空
建议:使用memset清空字符串
头文件:
#include
函数原型:
void *memset(void *s, int c, size_t n);
功能:用来清空一片空间
参数:
参数1:所需清空空间的起始地址
参数2:所需清空的字符(0或者\0')
参数3:所需清空空间的字节数(可以通过sizeof这个运算符去测)
返回值:清空空间之后的首地址
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
//定义一个枚举类型
enum VALUE
{
NULL_ERROR = -4,
MALLOC_ERROR,
REALLOC_ERROR,
ERROR,
OK
};
int myMalloc_Func(int **Q)
{
//判断入参
if(NULL == Q)
{
printf("NULL_ERROR!\n");
return NULL_ERROR;
}
//申请5个int 类型元素的空间
*Q = (int *)malloc(sizeof(int) * N);
//判断
if(NULL == *Q)
{
printf("malloc_error!\n");
return MALLOC_ERROR;
}
//清空空间
memset(*Q,'\0',sizeof(int) * N);
return OK;
}
int myRealloc_Func(int **Q,int NUM)
{
//判断
if(NULL == Q || NUM <= 0)
{
printf("参数有误!\n");
return NULL_ERROR;
}
*Q = (int *)realloc(*Q,(sizeof(int) * NUM));
//判断扩容是否成功
if(NULL == *Q)
{
printf("扩容失败!\n");
return REALLOC_ERROR;
}
return OK;
}
int main(int argc, const char *argv[])
{
//在堆区申请一片空间用来存储5个整形的元素
//封装子函数实现申请空间
int *q;
int ret = myMalloc_Func(&q);
if(ret < 0)
{
return ERROR;
}
printf("申请空间成功!\n");
//扩容--->realloc
printf("请输入需要扩容的元素个数:\n");
int count;
scanf("%d",&count);
int All_NUM = N + count;
//子函数实现扩容
ret = myRealloc_Func(&q,All_NUM);
if(ret < 0)
{
return ERROR;
}
printf("扩容成功!\n");
//输入
int i;
for(i=0;i<All_NUM;i++)
{
scanf("%d",q+i);
//scanf("%d",&q[i]);
}
//输出
for(i=0;i<All_NUM;i++)
{
printf("%d ",*(q+i));
}
printf("\n");
//释放空间
free(q);//如果只malloc不free则会产生内存泄漏的问题
//置空
q = NULL;
return OK;
}
枚举:
是一个常量,和宏非常相像,但是枚举数据基本数据类型
枚举的用法:一般作为错误码来使用
格式:
关键字:enum
enum 枚举名
{
标识符1,
标识符2,
。。。
};
#include <stdio.h>
//定义一个枚举类型,用来描述错误原因
enum ERROR_NUM
{
ERROR1,
ERROR2 = 90,
ERROR3
};
int main(int argc, const char *argv[])
{
printf(" %d %d %d\n",ERROR1,ERROR2,ERROR3);
return 0;
}