C if() {.....return;} 中的return代表什么

p=(struct attribute *) malloc(sizeof(at));
if(p=='\0')
{
printf("out of memory.\n");
return;
}
后面把p指向一个结构数组,并开始赋值

我的疑问是return起到什么作用?如果执行了if,输出了out of memory,看样子还会继续向下执行,开始赋值吗?貌似没有补救,只是礼貌的检查一下似的。。。

return 在C语言中有两个作用:
1、返回1个值
2、结束当前函数的运行
本题目中就是结束当前函数的运行追问

那么这个if有什么意义吗?后面开始往P指向的结构体存储了,这样的话就算out of memory,也没有针对这种情况的操作

追答

此处if是判断动态开辟存储空间是否成功,但后续再没有代码,而是用return 直接结束了,所以没意义

追问

1,在什么情况下会开辟不成功?
2,是不是一般都会成功?
3,如果不成功怎么补救,应该写什么代码处理不成功的情况?

追答

肯定不是说都能成功,所开辟的空间肯定在内存是是连续的空间,如果内存剩余连续空间量不足就会出错,出错时malloc返回NULL, 因此要使用动态开辟,必须测试是否开辟成功,特别是开辟大空间。

如:
char *p;
p=(char * )malloc(1000000);
if( p!=NULL )
strcpy(p,"你好");
else
{ printf("开辟空间出错");
exit(0);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-17
如果执行了if,那么printf就会输出。 这里的return 就是结束这次函数的运行
相似回答