C語言的return語句


Q1:函數中的Return語句有什么用?

Q2Return 0有什么含義嗎?

 

A1Return的作用為,跳出當前的函數,並且返回到調用當前函數的主調函數,當前函數中Return語句一下代碼將不會運行,因為代碼運行過程已經返回到主調函數中去了,而不是當前的函數

A1代碼驗證:

#include <stdio.h>

int 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;
}

輸出結果:

我們可以發現,成功的輸出了test_return( )函數的值,這說明主函數main( )在調用了函數test_return( )后,又回到了主函數並且執行了語句:printf("add = %d", test_return(num_1,num_2));

這驗證了A1中對return作用1的描述

在代碼中我們可以發現,函數test_return( )中有兩個返回值:

1:return num_1 - num_2;

2:return num_1 + num_2;

明顯,輸出只給出了return1中的值即:return num_1 - num_2;  這驗證了A1中對return終止運行作用的描述

 

測試2:(將return1注釋掉)

#include <stdio.h>

int 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;
}

輸出結果:

一個復雜一點的代碼(用於理解return回溯到主調函數):

#include <stdio.h>

int one_three(void);
int two(void);
int main(void){
	printf("starting now:\n");
	one_three();
	printf("done\n");
	return 0;
}
int one_three(void){
	printf("one\n");
	two();//定義函數中調用定義函數,
		  // 這里調用了函數two(),
		  // two(),return后,還是回溯到one_three()中,即這里的主調函數就是one_three()
	printf("three\n"); 
	return 0;
}
int two(void){
	printf("two\n");
	return 0;
}

A2

return 0的用途:用來告知程序的結束。return 0 告訴程序正常結束。

return 表示從被調函數返回到主調函數繼續執行,返回時可附帶一個返回值,由return后面的參數指定。(這里我們在A1中說明了) return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。(以上代碼就是該情況)

//作者:CCCPKeay

//時間:2021.10.19


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM