二、return和exit、assert的区别
return语句是结束当前函数。而exit是结束main()函数,即整个程序,一般都是在遇到非常错误时才调用exit()。assert()是一个宏定义,在assert.h中申明,用来在DEBUG方式诊断程序,当参数中的条件不成立时,中断main()函数。建议多多使用assert()。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
/**********************************
* 功 能: 申请内存空间 *
**********************************/
char *getMemory(size_t len)
{
char *buffer;
//len>=15时正常运行,否则异常退出
assert(len >= 15);
buffer = (char *)malloc(len);
if (!buffer) { //未申请到空间则异常退出
exit(-1);
}
return buffer; //正常返回
}
/**********************************
* 功 能: 教学测试主程序 *
**********************************/
int main(void)
{
char *p;
int num;
while (1) {
printf("请输入一个整数:");
scanf("%d", &num); //输入一个整数
//申请空间
p = getMemory(num);
//拷贝字符串并输出
strcpy(p, "www.quanxue.cn");
printf("%s\n", p);
free(p); //这句千万不能忘记
}
return 0;
}
|