关于返回值的问题
2个回答
展开全部
我这个不是已经举例了嘛……我再加点解释吧,加在最后了
当函数执行到一个return时就返回了。不再执行以后的部分。
比如:
int readfile( char *sFileName )
{
FILE *fp;
if ( (fp=(fopen(sFileName,"r"))==NULL )
{
return -1;//当打不开文件时就返回。
}
int i = 0;
char buff[1024];
while ( !eof(fp) )
{
fgets(buff,1024,fp);
if ( buff[0] == 'a' )
{
return 1;//当前第一个字符为a时,返回
}
fclose(fp);
return 0;//执行结束时的返回。
}
如果一个文件不存在,那么int readfile( char *sFileName )会返回-1,因为它符合if ( (fp=(fopen(sFileName,"r"))==NULL )条件。而条件让它返回-1.之后的语句就不执行了。
如果一个文件存在,但它的第一个字符是a,那么函数int readfile( char *sFileName )会返回1,因为它符合f ( buff[0] == 'a' ) 的条件 ,而这个条件让函数返回1,但是我这个程序在这里会生成脏内存,因为我并没有关闭fp(这也是你以后return时要注意的)
只有当前两个条件都不满足,并且没有死循环的情况下这个函数才会返回0.
不知道这么说清楚不清楚
当函数执行到一个return时就返回了。不再执行以后的部分。
比如:
int readfile( char *sFileName )
{
FILE *fp;
if ( (fp=(fopen(sFileName,"r"))==NULL )
{
return -1;//当打不开文件时就返回。
}
int i = 0;
char buff[1024];
while ( !eof(fp) )
{
fgets(buff,1024,fp);
if ( buff[0] == 'a' )
{
return 1;//当前第一个字符为a时,返回
}
fclose(fp);
return 0;//执行结束时的返回。
}
如果一个文件不存在,那么int readfile( char *sFileName )会返回-1,因为它符合if ( (fp=(fopen(sFileName,"r"))==NULL )条件。而条件让它返回-1.之后的语句就不执行了。
如果一个文件存在,但它的第一个字符是a,那么函数int readfile( char *sFileName )会返回1,因为它符合f ( buff[0] == 'a' ) 的条件 ,而这个条件让函数返回1,但是我这个程序在这里会生成脏内存,因为我并没有关闭fp(这也是你以后return时要注意的)
只有当前两个条件都不满足,并且没有死循环的情况下这个函数才会返回0.
不知道这么说清楚不清楚
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询