天天看點

c 調用oracle函數傳回值,C語言 函數參數說明 與 傳回值

在C語言中,函數的參數分為形參和實參。形參出現在函數定義中,在整個函數體内都可以使用,離開該函數則不能使用。實參出現在函數調用中。

C 語言是結構化語言,它的主要結構成分是函數。函數被作為一種構件,用以完成程式中的某個具體功能。函數允許一個程式的各個任務被分别定義和編碼,使程式子產品化。本章介紹 C 語言函數的設計,如何用函數分解程式的各個功能,如何使用函數構成子產品化程式,以及代碼複用的基本思想。

函數說明 與 傳回值

函數的一般形式如下:

類型說明符  函數名(參數表)

參數說明段

{

函數體

}

1 函數的類型說明

函數的類型說明符可以是任何資料類型,包括空值型 void,即不使用 return 語句傳回任何資料。預設情況下,函數被自動說明為整型。函數必須在第一調用前定義,這樣編譯器才能找到該函數。前置函數類型說明被稱為 函數原型。

#include

#include

#define PI 3.141593

float cylinder_area(float, float);        // 函數的類型說明,函數原型

int main()

{

float r, h, s;        // r圓半徑,h高,s面積

puts("請輸入圓柱的半徑和高:");

if (scanf("%f,%f", &r, &h) == 2)

{

s = cylinder_area(r, h); // 調用函數 cylinder_area(),傳回值到變量s

printf("\n該圓柱體的表面積為:%f\n", s);

}

else

{

puts("您輸入的資料格式不合法!");

}

return EXIT_SUCCESS;

}

float cylinder_area(float r, float h)

{

float cd_area;

cd_area = 2 * (PI * r * r) (2 * PI * r * h);

return  cd_area;

}

設計函數時需要注意資料類型的比對關系,函數的類型說明符必須與 return 語句傳回的資料類型相同,函數的參數說明必須與參數的資料類型相同,否則會造成編譯錯誤。

2 傳回語句

函數的傳回語句 return 有 2 個作用:其一,結束目前函數,調用者獲得程式控制權;其二,将計算結果傳遞給調用者。

函數的結束有 2 種情況,一是函數體内所有的代碼執行完畢,二是 return 語句被執行。

C語言函數的參數和傳回值

函數的參數

函數的參數分為形參和實參。形參出現在函數定義中,在整個函數體内都可以使用,離開該函數則不能使用。實參出現在函數調用中。

形參和實參的功能是作資料傳送,發生函數調用時,實參的值會傳送給形參。

形參和實參有以下幾個特點:

1) 形參變量隻有在函數被調用時才配置設定記憶體單元,在調用結束時,立刻釋放所配置設定的記憶體單元。是以,形參隻有在函數内部有效,不能在函數外部使用。

2) 實參可以是常量、變量、表達式、函數等,無論實參是何種類型的資料,在進行函數調用時,它們都必須有确定的值,以便把這些值傳送給形參。是以應預先用指派,輸入等辦法使實參獲得确定值。

3) 實參和形參在數量上、類型上、順序上必須嚴格一緻,否則會發生“類型不比對”的錯誤。

函數調用中發生的資料傳送是單向的,隻能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 是以在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

【示例】計算 1 2 3 ... (n-1) n 的值。

#include

int sum(int n){

int i;

for(i=n-1; i>=1; i--){

n =i;

}

printf("The inner n = %d\n",n);

return n;

}

int main(){

int n, total;

printf("Input a number: ");

scanf("%d",&n);

total = sum(n);

printf("The outer n = %d \n", n);

printf("1 2 3 ... (n-1) n = %d\n", total);

return 0;

}

運作結果:

Input a number: 100?

The inner n = 5050

The outer n = 100

1 2 3 . .. (n-l) n = 5050

通過 scanf 輸入 n 的值,作為實參,在調用 sum 時傳送給形參量 n。

注意:本例中形參變量和實參變量的名稱都是 n,但這是兩個不同的量,各自的作用域不同,下節将會講解。

在mian函數中用printf 語句輸出一次n值,這個n值是實參n的值。在函數sum中也用printf 語句輸出了一次n值,這個n值是形參最後取得的n值。

從運作情況看,輸入n值為100,即實參n的值為100,把此值傳給函數sum時,形參n的初值也為100,在執行函數過程中,形參n的值變為5050。函數運作結束後,輸出實參n的值仍為100。可見實參的值不随形參的變化而變化。

函數的傳回值

函數的值(或稱函數傳回值)是指函數被調用之後,執行函數體中的程式段所取得的值,可以通過return語句傳回。

return語句的一般形式為:

return 表達式;

或者:

return (表達式);

例如:

return max;

return a b;

return (100 200);

函數中可以有多個 return 語句,但每次調用隻能有一個return 語句被執行,是以隻有一個傳回值。

一旦遇到 return 語句,不管後面有沒有代碼,函數立即運作結束,将值傳回。例如:

int func(){

int a=100, b=200, c;

return a b;

return a*b;

return b/a;

}

傳回值始終 a b 的值,也就是300。

沒有傳回值的函數為空類型,用void進行說明。例如:

void func(){

printf("Hello world!\n");

}

一旦函數的類型被定義為 void,就不能再接受它的值了。例如,下面的語句是錯誤的:

int a = func();

為了使程式有良好的可讀性并減少出錯, 凡不要求傳回值的函數都應定義為空類型。