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