国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語(yǔ)言基礎(chǔ)知識(shí):函數(shù)中的參數(shù)與返回值

這篇具有很好參考價(jià)值的文章主要介紹了C語(yǔ)言基礎(chǔ)知識(shí):函數(shù)中的參數(shù)與返回值。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1.形式參數(shù)和實(shí)際參數(shù)

1.1形式參數(shù)

1.2實(shí)際參數(shù)

2.變量作為函數(shù)參數(shù)

3.數(shù)組作為函數(shù)參數(shù)

3.1數(shù)組元素作為函數(shù)參數(shù)

3.2一維數(shù)組名作為函數(shù)參數(shù)

3.3數(shù)組指針,即數(shù)組元素的地址作為函數(shù)參數(shù)

4.函數(shù)返回值


1.形式參數(shù)和實(shí)際參數(shù)

1.1形式參數(shù)

形參出現(xiàn)在被調(diào)函數(shù)當(dāng)中,在整個(gè)函數(shù)體內(nèi)都可以使用。形參在定義時(shí)編譯系統(tǒng)并不分配存儲(chǔ)空間,只有在調(diào)用該函數(shù)時(shí)才分配內(nèi)存單元。調(diào)用結(jié)束內(nèi)存單元被釋放,故形參只有在函數(shù)調(diào)用時(shí)有效,調(diào)用結(jié)束時(shí)不能再使用。

1.2實(shí)際參數(shù)

實(shí)參出現(xiàn)在主調(diào)函數(shù)當(dāng)中,當(dāng)函數(shù)調(diào)用時(shí),朱調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參,從而實(shí)現(xiàn)函數(shù)間的數(shù)據(jù)傳遞。傳遞方式有兩種:值傳遞和地址傳遞方式。

2.變量作為函數(shù)參數(shù)

當(dāng)形參定義為變量時(shí),實(shí)參可以是常量、變量和表達(dá)式,這種函數(shù)間的參數(shù)傳遞為值傳遞方式。值傳遞的特點(diǎn)是參數(shù)的“單向傳遞”;

int swap(int a,int b)
{
   int temp;
   temp=a;
   a=b;
   b=temp;
   return 0;
}  
int main (void){
		int a=3,b=4;
		swap(a,b);
	}

由于是值傳遞,單向傳遞,并不會(huì)改變a,b的值。

3.數(shù)組作為函數(shù)參數(shù)

3.1數(shù)組元素作為函數(shù)參數(shù)

數(shù)組元素又稱為下標(biāo)變量,它具有普通變量的一切性質(zhì),因此數(shù)組元素作為函數(shù)的實(shí)參進(jìn)行數(shù)據(jù)傳遞是與普通變量沒(méi)有任何區(qū)別,也是值傳遞

int swap(int a,int b)
{
   int temp;
   temp=a;
   a=b;
   b=temp;
   return 0;
}  
int main (void){
		int a[]={3,4};
		swap(a[0],b[0]);
	}


同樣是值傳遞并不會(huì)改變a[0]的值。

3.2一維數(shù)組名作為函數(shù)參數(shù)

數(shù)組名是一個(gè)地址,是數(shù)組的首地址,因此用數(shù)組名作為函數(shù)的參數(shù)進(jìn)行數(shù)據(jù)傳遞時(shí),執(zhí)行的是地址傳遞方式。所謂地址傳遞,顧名思義實(shí)參傳遞的不是數(shù)據(jù)本身,而是數(shù)據(jù)存在的地址。函數(shù)調(diào)用時(shí),把數(shù)組名即數(shù)組的首地址作為實(shí)參傳遞給形參(必須是可接受地址的數(shù)組名或者指針變量),形參數(shù)組名取得首地址后就有了實(shí)在的數(shù)組,這時(shí)實(shí)質(zhì)上實(shí)參和形參是同一個(gè)數(shù)組,指向同一段存儲(chǔ)空間,實(shí)參的改變就是對(duì)形參的改變,所以傳址方式可看成是數(shù)據(jù)進(jìn)行了“雙向傳遞”。

3.3數(shù)組指針,即數(shù)組元素的地址作為函數(shù)參數(shù)

由于數(shù)組元素的地址的本質(zhì)仍然為地址,所以屬于地址傳遞方式。

int swap(int *a,int *b)
{
   int temp;
   temp=*a;
   *a=*b;
   *b=temp;
   return 0;
}  
int main (void){
		int arr[] = {1,2};
		int *a = &arr[0];
	    	int *b = &arr[1];
			swap(a,b);
	}


重點(diǎn):

  • 數(shù)組元素(下標(biāo)變量)作為函數(shù)的參數(shù)進(jìn)行的數(shù)據(jù)傳遞是值傳遞方式,數(shù)組名(數(shù)組首地址)、數(shù)組元素的地址(&arr[0])作為函數(shù)參數(shù)進(jìn)行的數(shù)據(jù)傳遞是地址傳遞方式。
  • 實(shí)參為數(shù)組名是,形參接收時(shí)可以有三種形式:帶下標(biāo)的數(shù)組名(arr[0])。不帶下標(biāo)的數(shù)組名(arr)、可接收地址值的指針變量名(*a)。由于是參數(shù)組和形參數(shù)組都指向同一段內(nèi)存單元,故它們操作的是同一批數(shù)據(jù),所以形參的改變就是改變了實(shí)參中的數(shù)據(jù)。

4.函數(shù)返回值

函數(shù)的返回值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的代碼所得到的結(jié)果,這個(gè)結(jié)果通過(guò) return 語(yǔ)句返回。
return 語(yǔ)句的一般形式為:

return 表達(dá)式;

或者:

return (表達(dá)式);

有沒(méi)有( )都是正確的,為了簡(jiǎn)明,一般也不寫(xiě)( )。例如:

return max;
return a+b;
return (100+200);

對(duì)C語(yǔ)言返回值的說(shuō)明:

  1. 沒(méi)有返回值的函數(shù)為空類型,用void表示。例如:
void func(){
    printf("http://c.biancheng.net\n");
}

一旦函數(shù)的返回值類型被定義為 void,就不能再接收它的值了。例如,下面的語(yǔ)句是錯(cuò)誤的:

int a = func();

為了使程序有良好的可讀性并減少出錯(cuò), 凡不要求返回值的函數(shù)都應(yīng)定義為 void 類型。

  1. return 語(yǔ)句可以有多個(gè),可以出現(xiàn)在函數(shù)體的任意位置,但是每次調(diào)用函數(shù)只能有一個(gè) return 語(yǔ)句被執(zhí)行,所以只有一個(gè)返回值(少數(shù)的編程語(yǔ)言支持多個(gè)返回值,例如Go語(yǔ)言)。例如:
//返回兩個(gè)整數(shù)中較大的一個(gè)
int max(int a, int b){
    if(a > b){
        return a;
    }else{
        return b;
    }
}

如果a>b成立,就執(zhí)行return a,return b不會(huì)執(zhí)行;如果不成立,就執(zhí)行return b,return a不會(huì)執(zhí)行。

  1. 函數(shù)一旦遇到 return 語(yǔ)句就立即返回,后面的所有語(yǔ)句都不會(huì)被執(zhí)行到了。從這個(gè)角度看,return 語(yǔ)句還有強(qiáng)制結(jié)束函數(shù)執(zhí)行的作用。例如:
//返回兩個(gè)整數(shù)中較大的一個(gè)
int max(int a, int b){
    return (a>b) ? a : b;
    printf("Function is performed\n");
}

第 4 行代碼就是多余的,永遠(yuǎn)沒(méi)有執(zhí)行的機(jī)會(huì)。
下面我們定義了一個(gè)判斷素?cái)?shù)的函數(shù),這個(gè)例子更加實(shí)用:

#include <stdio.h>

int prime(int n){
    int is_prime = 1, i;

    //n一旦小于0就不符合條件,就沒(méi)必要執(zhí)行后面的代碼了,所以提前結(jié)束函數(shù)
    if(n < 0){ return -1; }

    for(i=2; i<n; i++){
        if(n % i == 0){
            is_prime = 0;
            break;
        }
    }

    return is_prime;
}

int main(){
    int num, is_prime;
    scanf("%d", &num);

    is_prime = prime(num);
    if(is_prime < 0){
        printf("%d is a illegal number.\n", num);
    }else if(is_prime > 0){
        printf("%d is a prime number.\n", num);
    }else{
        printf("%d is not a prime number.\n", num);
    }

    return 0;
}

prime() 是一個(gè)用來(lái)求素?cái)?shù)的函數(shù)。素?cái)?shù)是自然數(shù),它的值大于等于零,一旦傳遞給 prime() 的值小于零就沒(méi)有意義了,就無(wú)法判斷是否是素?cái)?shù)了,所以一旦檢測(cè)到參數(shù) n 的值小于 0,就使用 return 語(yǔ)句提前結(jié)束函數(shù)。

return 語(yǔ)句是提前結(jié)束函數(shù)的唯一辦法。return 后面可以跟一份數(shù)據(jù),表示將這份數(shù)據(jù)返回到函數(shù)外面;return 后面也可以不跟任何數(shù)據(jù),表示什么也不返回,僅僅用來(lái)結(jié)束函數(shù)。

更改上面的代碼,使得 return 后面不跟任何數(shù)據(jù):

#include <stdio.h>

void prime(int n){
    int is_prime = 1, i;

    if(n < 0){
        printf("%d is a illegal number.\n", n);
        return;  //return后面不帶任何數(shù)據(jù)
    }

    for(i=2; i<n; i++){
        if(n % i == 0){
            is_prime = 0;
            break;
        }
    }

    if(is_prime > 0){
        printf("%d is a prime number.\n", n);
    }else{
        printf("%d is not a prime number.\n", n);
    }
}

int main(){
    int num;
    scanf("%d", &num);
    prime(num);

    return 0;
}

prime() 的返回值是 void,return 后面不能帶任何數(shù)據(jù),直接寫(xiě)分號(hào)即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-765006.html

到了這里,關(guān)于C語(yǔ)言基礎(chǔ)知識(shí):函數(shù)中的參數(shù)與返回值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(函數(shù)遞歸詳解)

    c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(函數(shù)遞歸詳解)

    \\\"從前有座山,山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚。有一天老和尚對(duì)小和尚說(shuō):“從前有座山.山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚,有一天老和尚對(duì)小和尚說(shuō):“從前有座山.山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚......\\\" (雖能體現(xiàn)遞歸特點(diǎn),但又不是遞歸)

    2024年02月14日
    瀏覽(29)
  • C語(yǔ)言格式化輸出函數(shù)printf詳解——C語(yǔ)言基礎(chǔ)知識(shí)

    C語(yǔ)言格式化輸出函數(shù)printf詳解——C語(yǔ)言基礎(chǔ)知識(shí)

    (由于篇幅較長(zhǎng),內(nèi)容較全,建議收藏) printf函數(shù)的一般格式為: printf(格式控制字符串,輸出值參數(shù)表); 如: 其中, f=%f,c=%fn 是 格式控制字符串 , f,c 是 輸出值參數(shù)表 。 (1)格式控制字符串是用雙引號(hào)括起來(lái)的字符串,包括三類信息: 格式字符。格式字符由“%”

    2023年04月08日
    瀏覽(29)
  • 函數(shù)的參數(shù)傳遞和返回值-PHP8知識(shí)詳解

    函數(shù)的參數(shù)傳遞和返回值-PHP8知識(shí)詳解

    本文學(xué)習(xí)的是《php8知識(shí)詳解》中的《函數(shù)的參數(shù)傳遞和返回值》。主要包括:向函數(shù)傳遞參數(shù)值、向函數(shù)傳遞參數(shù)引用、函數(shù)的返回值。 1、向函數(shù)傳遞參數(shù)值 函數(shù)是一段封閉的程序,有時(shí)候,程序員需要向函數(shù)傳遞一些數(shù)據(jù)進(jìn)行操作??梢越邮軅魅?yún)?shù)的函數(shù)定義形式如下

    2024年02月11日
    瀏覽(23)
  • AI模型部署基礎(chǔ)知識(shí)(一):模型權(quán)重與參數(shù)精度

    AI模型部署基礎(chǔ)知識(shí)(一):模型權(quán)重與參數(shù)精度

    一般情況來(lái)說(shuō),我們通過(guò)收集數(shù)據(jù),訓(xùn)練深度學(xué)習(xí)模型,通過(guò)反向傳播求導(dǎo)更新模型的參數(shù),得到一個(gè)契合數(shù)據(jù)和任務(wù)的模型。這一階段,通常使用pythonpytorch進(jìn)行模型的訓(xùn)練得到pth等類型文件。AI模型部署就是將在python環(huán)境中訓(xùn)練的模型參數(shù)放到需要部署的硬件環(huán)境中去跑,

    2024年01月20日
    瀏覽(16)
  • 視頻的專業(yè)基礎(chǔ)知識(shí)(一)常用的編碼格式和參數(shù)

    視頻的專業(yè)基礎(chǔ)知識(shí)(一)常用的編碼格式和參數(shù)

    編碼格式: 一個(gè)視頻文件本身,通常由音頻和視頻兩部分組成。例如視頻文件,就是由avc視頻編碼+AAC音頻編碼組成的,常見(jiàn)的視頻編碼格式有Xvid,AVC/H.264,MPEG1,MPEG2 等,常見(jiàn)的音頻編碼有MP3、AAC等。 編解碼格式: 是數(shù)據(jù)按那種方式編碼壓縮,便于網(wǎng)絡(luò)傳輸和降低帶寬的需

    2024年02月13日
    瀏覽(26)
  • 區(qū)塊鏈基礎(chǔ)知識(shí)——哈希函數(shù)

    區(qū)塊鏈基礎(chǔ)知識(shí)——哈希函數(shù)

    哈希函數(shù)是一種數(shù)學(xué)函數(shù),可根據(jù)輸入的內(nèi)容輸出其對(duì)應(yīng)的哈希值。散列函數(shù)的輸入具有任意長(zhǎng)度,但輸出始終具有固定的長(zhǎng)度。 散列算法的核心是一個(gè)數(shù)學(xué)函數(shù),該散列函數(shù)構(gòu)成散列算法的一部分,根據(jù)輸入的數(shù)據(jù)塊進(jìn)行運(yùn)算,得到的結(jié)果作為散列值。散列算法涉及多輪散

    2024年02月11日
    瀏覽(21)
  • C語(yǔ)言如何傳遞參數(shù)到函數(shù),并從函數(shù)中返回值?

    假設(shè)我們現(xiàn)在要寫(xiě)一個(gè)函數(shù),名字叫做\\\"吃飯\\\"。這個(gè)函數(shù)的功能是傳入?yún)?shù)\\\"食物\\\",然后從函數(shù)中返回一個(gè)值\\\"滿足程度\\\"。我們來(lái)看看如何實(shí)現(xiàn)吧! 我們需要寫(xiě)一個(gè)函數(shù)原型,聲明這個(gè)函數(shù)的存在和參數(shù)的類型。嗯,函數(shù)原型就像餐廳的菜單,告訴顧客有哪些選擇和怎么點(diǎn)菜。

    2024年02月12日
    瀏覽(20)
  • C++ 從零基礎(chǔ)到入門(mén)(3)—— 函數(shù)基礎(chǔ)知識(shí)

    目錄 一、函數(shù)簡(jiǎn)介 1、函數(shù)的作用和目的 2、函數(shù)的基本概念 二、函數(shù)定義與聲明 1、函數(shù)定義的語(yǔ)法和結(jié)構(gòu) 2、函數(shù)原型 三、參數(shù)傳遞 1、值傳遞 2、引用傳遞 3、指針傳遞 4、參數(shù)傳遞的選擇 5.引用傳遞與指針傳遞的區(qū)別 四、返回值 1、返回類型 2、返回語(yǔ)句 在 C++ 中,函數(shù)

    2024年01月21日
    瀏覽(27)
  • FPGA基礎(chǔ)知識(shí)-任務(wù)和函數(shù)

    FPGA基礎(chǔ)知識(shí)-任務(wù)和函數(shù)

    目錄 學(xué)習(xí)目標(biāo) 學(xué)習(xí)內(nèi)容 1.任務(wù)和函數(shù)的區(qū)別 2.任務(wù) 3.函數(shù) 學(xué)習(xí)時(shí)間 學(xué)習(xí)總結(jié) 1.理解任務(wù)和函數(shù)之間的區(qū)別。 2.理解定義任務(wù)所需的條件,學(xué)會(huì)任務(wù)的聲明和調(diào)用。 3.理解定義函數(shù)所需的條件.學(xué)會(huì)函數(shù)的聲明和調(diào)用。 提示:這里可以添加要學(xué)的內(nèi)容 ? ? ?在 Verilog中,任務(wù)

    2024年02月10日
    瀏覽(20)
  • 【STM32】基礎(chǔ)知識(shí) 第五課 C 語(yǔ)言基礎(chǔ)知識(shí)

    【STM32】基礎(chǔ)知識(shí) 第五課 C 語(yǔ)言基礎(chǔ)知識(shí)

    stdint.h 是從 C99 中引進(jìn)的一個(gè)標(biāo)準(zhǔn) C 庫(kù)的文件. 路徑: “D:MDK5.34ARMARMCCinclude” 運(yùn)算符 含義 運(yùn)算符 含義 按位與 ~ 按位取反 | 按位或 左移 ^ 按位異或 右移 按位與: num1 運(yùn)算符 num2 結(jié)果 0 0 0 1 0 0 0 1 0 1 1 1 按位或: num1 運(yùn)算符 num2 結(jié)果 0 | 0 0 1 | 0 1 0 | 1 1 1 | 1 1 按位異或: num1 運(yùn)算符

    2024年02月13日
    瀏覽(52)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包