C补习----------->第十天,清空函数、枚举

清空函数:


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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值