- *Q1*:函数中的return有什么用?
- *Q2* return 0的用途
A1: return的作用为:跳出当前的函数,并且返回到调用当前函数的主调函数并且当执行了return语句后,return以后的语句将不再执行(主函数的return 0则返回到电脑并将数值0告诉电脑即:程序正常结束)
对return语句终止性的代码验证:
#includeint test_return(int num_1, int num_2); int main(){ int num_1, num_2; printf("Please enter two number:n"); scanf("%d%d", &num_1, &num_2); test_return(num_1,num_2); printf("add = %d", test_return(num_1,num_2)); printf("n"); return 0; } int test_return(int num_1, int num_2){ return num_1 - num_2; //两个不同的return来检验return的终止性 return num_1 + num_2; }
在 int test_return(int num_1, int num_2)函数中有两个return语句:
1:return num_1 - num_2;
2:return num_1 + num_2;
不难理解,若执行return语句1,则会返回值:num_1 - num_2,若执行return语句2,则会返回值:num_1 + num_2。
那么只需要输入两个数,且这两个数的和、差不相等,查看函数int test_return( )的返回值便可以验证return语句2是否执行。
输入输出验证:
明显发现,只执行了return语句1,返回了num_1 - num_2的值至此就验证了return语句的终止性。
那么返回到主调函数又怎么回事?
在自定义函数int test_return(int num_1, int num_2)中没有任何的输出函数,那么是在哪里将值num_1 - num_2输出的?
在主函数main( ) 中调用了 test_return( ) 函数后,在主函数中有这样一句语句:printf(“add = %d”, test_return(num_1, num_2)); 这句语句就将值 num_1 - num_2 输出了。 说明在调用了函数 test_return( ) 后,是会返回到调用函数的地方的 (主调函数的所在位置)
测试2 将return语句1注释掉:
#includeint test_return(int num_1, int num_2); int main(){ int num_1, num_2; printf("Please enter two number:n"); scanf("%d%d", &num_1, &num_2); test_return(num_1,num_2); printf("add = %d", test_return(num_1,num_2)); printf("n"); return 0; } int test_return(int num_1, int num_2){ //return num_1 - num_2; //两个不同的return来检验return的终止性 return num_1 + num_2; }
输入输出验证:
下面给出一个多重调用函数的代码,用于理解函数返回的回溯:
#includeQ2 return 0的用途int one_three(void); int two(void); int main(void){ printf("starting now:n"); one_three(); printf("donen"); return 0; } int one_three(void){ printf("onen"); two();//定义函数中调用定义函数, // 这里调用了函数two(), // two(),return后,还是回溯到one_three()中,即这里的主调函数就是one_three() printf("threen"); return 0; } int two(void){ printf("twon"); return 0;
A2: return 0 用来告知 程序结束(数值0表示正常结束)
return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
//作者:CCCPKeay
//时间:2021/11/01



