亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C 語(yǔ)言中函數(shù)的參數(shù)傳遞

        2020-10-09 07:13:08秦玉平冷強(qiáng)奎李祥納
        關(guān)鍵詞:函數(shù)調(diào)用存儲(chǔ)單元數(shù)組

        秦玉平,冷強(qiáng)奎,李祥納

        (1.渤海大學(xué) 工學(xué)院,遼寧 錦州121013;2.渤海大學(xué) 信息科學(xué)與技術(shù)學(xué)院,遼寧 錦州121013;3.北京國(guó)電通網(wǎng)絡(luò)技術(shù)有限公司,北京100761)

        關(guān)鍵字:C語(yǔ)言;函數(shù);參數(shù)傳遞;傳遞規(guī)則

        0 引言

        C語(yǔ)言是一種功能強(qiáng)大且得到廣泛應(yīng)用的計(jì)算機(jī)高級(jí)語(yǔ)言[1].C語(yǔ)言是高校理工科專業(yè)的必修課程,主要培養(yǎng)學(xué)生C語(yǔ)言應(yīng)用能力和程序設(shè)計(jì)能力[2,3].

        一個(gè)C程序由一個(gè)或多個(gè)文件構(gòu)成,每個(gè)文件由一個(gè)或多個(gè)函數(shù)構(gòu)成,每個(gè)函數(shù)完成一個(gè)特定的功能,函數(shù)是構(gòu)成C程序的基本單位.依據(jù)函數(shù)關(guān)系,函數(shù)分為主調(diào)函數(shù)和被調(diào)函數(shù).依據(jù)函數(shù)形式,函數(shù)分為無(wú)參函數(shù)和有參函數(shù).

        在調(diào)用有參函數(shù)時(shí),主調(diào)函數(shù)和被調(diào)用函數(shù)之間有數(shù)據(jù)傳遞,數(shù)據(jù)傳遞通過(guò)函數(shù)的參數(shù)傳遞實(shí)現(xiàn).函數(shù)參數(shù)何時(shí)傳遞數(shù)據(jù)、函數(shù)參數(shù)怎樣傳遞數(shù)據(jù)、函數(shù)參數(shù)傳遞的是什么數(shù)據(jù)以及如何訪問參數(shù)傳遞的數(shù)據(jù),是學(xué)習(xí)者學(xué)習(xí)C語(yǔ)言函數(shù)時(shí)的難點(diǎn),只有學(xué)懂弄通這些問題,才能編寫出高質(zhì)量功能函數(shù).為使學(xué)習(xí)者能夠快速、熟練掌握函數(shù)參數(shù)傳遞,依據(jù)計(jì)算機(jī)程序設(shè)計(jì)教學(xué)方法[4,5],本文對(duì)每一種類型參數(shù)的傳遞時(shí)間、傳遞操作、傳遞內(nèi)容和數(shù)據(jù)操作分別闡述,并通過(guò)實(shí)例進(jìn)行詳細(xì)解析.

        1 參數(shù)傳遞規(guī)則

        C語(yǔ)言中,定義函數(shù)時(shí)的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參,調(diào)用函數(shù)時(shí)的參數(shù)稱為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參.形參是變量,每個(gè)形參前面有類型說(shuō)明符.實(shí)參可以是常量、變量和表達(dá)式,實(shí)參前面沒有類型說(shuō)明符.函數(shù)調(diào)用開始,為形參分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束,釋放形參占用的存儲(chǔ)單元.參數(shù)傳遞是單向的賦值運(yùn)算,即實(shí)參的值依次對(duì)應(yīng)地傳遞給形參,但形參不能反傳給實(shí)參.參數(shù)傳遞的“值”可以是數(shù)值,也可以是地址,即參數(shù)傳遞有傳值和傳址兩種方式.形參與實(shí)參的數(shù)據(jù)類型要一致,否則賦值非法或按不同類型數(shù)值的賦值規(guī)則自動(dòng)進(jìn)行類型轉(zhuǎn)換.

        2 參數(shù)類型及傳遞方式

        C語(yǔ)言的數(shù)據(jù)類型有基本類型、構(gòu)造類型、指針類型和空類型四種.其中,基本類型包括整型、實(shí)型、字符型和枚舉型.構(gòu)造類型包括數(shù)組、結(jié)構(gòu)體和共用體.

        2.1 基本類型數(shù)據(jù)作函數(shù)參數(shù)

        基本類型數(shù)據(jù)作函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳值方式,形參和實(shí)參占用各自的存儲(chǔ)單元,對(duì)形參值的修改不會(huì)影響實(shí)參值.

        【例1】基本類型數(shù)據(jù)作為函數(shù)參數(shù)舉例.

        例1中,函數(shù)fun1的功能是交換形參a、b的值.函數(shù)調(diào)用開始,為形參a、b分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即a=x、b=y,見圖1.函數(shù)fun1中對(duì)形參a、b值的修改,沒有影響實(shí)參a、b的值.

        2.2 基本類型指針作函數(shù)參數(shù)

        基本類型指針作函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳址方式,實(shí)參和實(shí)參指向同一對(duì)象,修改形參指向變量的值就是修改實(shí)參指向變量的值.利用指針引用所指向的變量的方式是“*指針變量”.

        【例2】基本類型指針作函數(shù)參數(shù)舉例.

        例2中,函數(shù)fun2的功能是交換形參a指向變量和b指向變量的值.函數(shù)調(diào)用開始,為形參a、b分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即a=&x、b=&y,見圖2.此時(shí),*a就是x,*b就是y,交換*a、*b的值,即交換變量x、y的值.

        在程序設(shè)計(jì)時(shí),利用基本類型指針作函數(shù)的參數(shù),可以通過(guò)一次函數(shù)調(diào)用得到多個(gè)結(jié)果.

        2.3 一維數(shù)組作函數(shù)參數(shù)

        一維基本類型數(shù)組、一維結(jié)構(gòu)體數(shù)組、一維共用體數(shù)組和一維指針數(shù)組都可作為函數(shù)的參數(shù).一維數(shù)組名代表數(shù)組在內(nèi)存中的起始地址,一維數(shù)組作為函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳址方式.由于一維數(shù)組名是常量,不能對(duì)其進(jìn)行賦值運(yùn)算,編譯系統(tǒng)將一維數(shù)組說(shuō)明格式的形參轉(zhuǎn)換為指向數(shù)組元素的指針說(shuō)明格式.函數(shù)調(diào)用時(shí)傳遞給形參的是數(shù)組的首地址,即形參數(shù)組與實(shí)參數(shù)組為同一個(gè)數(shù)組.

        例3中,函數(shù)fun3的功能是交換數(shù)組第一個(gè)元素和最后元素的值.編譯時(shí)編譯系統(tǒng)將函數(shù)fun3中的形參說(shuō)明“int x[]”轉(zhuǎn)換為“int*x”.函數(shù)調(diào)用開始,為形參x分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即x=a,見圖3.此時(shí),x[i]與a[i](0≤i≤N-1)表示同一數(shù)組元素,對(duì)形參數(shù)組x操作等同于對(duì)實(shí)參數(shù)組a操作.

        2.4 二維數(shù)組作函數(shù)參數(shù)

        二維基本類型數(shù)組、二維結(jié)構(gòu)體數(shù)組、二維共用體數(shù)組和二維指針數(shù)組都可作為函數(shù)的參數(shù).C語(yǔ)言對(duì)二維數(shù)組的處理方法是將其分解成多個(gè)一維數(shù)組,即將每一行看作一個(gè)一維數(shù)組,并按行存儲(chǔ).二維數(shù)組的數(shù)組名代表數(shù)組在內(nèi)存中的起始地址,二維數(shù)組作為函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳址方式.由于二維數(shù)組名是常量,不能對(duì)其進(jìn)行賦值運(yùn)算,編譯系統(tǒng)將二維數(shù)組說(shuō)明格式的形參轉(zhuǎn)換為指向一維數(shù)組的指針說(shuō)明格式.調(diào)用函數(shù)時(shí)傳遞給形參的是數(shù)組的首地址,即形參數(shù)組與實(shí)參數(shù)組是同一個(gè)數(shù)組.

        【例4】二維數(shù)組作為函數(shù)參數(shù)舉例.

        例4中,函數(shù)fun4的功能是互換二維數(shù)組最大值與最小值的位置.編譯時(shí)編譯系統(tǒng)將函數(shù)fun4中的形參說(shuō)明“int x[M][N]”轉(zhuǎn)換為“int(*x)[N]”.函數(shù)調(diào)用開始,為形參x分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即x=a,見圖4.此時(shí),x[i][j]與a[i][j](0≤i≤M-1,0≤j≤N-1)表示同一數(shù)組元素,對(duì)形參數(shù)組x操作等同于對(duì)實(shí)參數(shù)組a操作.

        2.5 結(jié)構(gòu)體(或共用體)類型數(shù)據(jù)作函數(shù)參數(shù)

        結(jié)構(gòu)體類型數(shù)據(jù)和共用體類型數(shù)據(jù)都可作函數(shù)的參數(shù),但實(shí)參也必須是變量,其原因是共用體變量不能初始化,結(jié)構(gòu)體變量除初始化外不能整體賦值.結(jié)構(gòu)體和共用體變量作函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳值方式,參數(shù)傳遞形式是一個(gè)賦值運(yùn)算,實(shí)際是多個(gè)賦值運(yùn)算,即將實(shí)參各成員的值依次賦給形參的相應(yīng)成員.由于形參和實(shí)參占用各自的存儲(chǔ)單元,所以對(duì)形參值的修改不會(huì)影響實(shí)參.

        【例5】結(jié)構(gòu)體變量作為函數(shù)參數(shù)舉例.

        例5中,函數(shù)fun5的功能是輸出結(jié)構(gòu)體變量x各成員的值.函數(shù)調(diào)用開始,為形參x分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即x=a(x.c=a.c,x.h=a.h,scrcpy(x.str,a.str)),見圖5.

        2.6 結(jié)構(gòu)體(或共用體)指針作函數(shù)參數(shù)

        結(jié)構(gòu)體(或共用體)指針作函數(shù)參數(shù)時(shí),參數(shù)傳遞是傳址方式,實(shí)參和實(shí)參指向同一變量,修改形參指向變量的成員值就是修改實(shí)參指向變量的成員值.利用結(jié)構(gòu)體(或共用體)指針變量引用結(jié)構(gòu)體變量成員的方式是“指針變量->成員”或“(*指針變量).成員”.

        【例6】結(jié)構(gòu)體指針作為函數(shù)參數(shù)舉例.

        例6中,函數(shù)fun6的功能是輸出指針變量x指向變量的各成員的值.函數(shù)調(diào)用開始,為形參x分配存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,即x=a,見圖6.此時(shí),是用指針變量x引用變量a的成員.

        另外,結(jié)構(gòu)體、共用體的成員和數(shù)組元素都可作為函數(shù)的參數(shù),傳遞方式和數(shù)據(jù)處理與同類型的數(shù)據(jù)相同.

        3 結(jié)論

        在調(diào)用有參函數(shù)時(shí),先為形參分類存儲(chǔ)單元,同時(shí)進(jìn)行參數(shù)傳遞,然后再執(zhí)行規(guī)定的操作.函數(shù)參數(shù)傳遞規(guī)則是將實(shí)參表達(dá)式的值依次對(duì)應(yīng)地傳給形參表中的各形參變量,即參數(shù)傳遞是單向的賦值運(yùn)算.參數(shù)傳遞信息有兩種,一種是數(shù)值,另一種是地址.傳值時(shí),對(duì)應(yīng)的形參是基本類型、結(jié)構(gòu)體類型或共用體類型的變量,在被調(diào)函數(shù)中對(duì)形參的操作,不會(huì)影響到主調(diào)函數(shù)中的實(shí)參值.傳址時(shí),對(duì)應(yīng)的形參是指針變量,此時(shí),實(shí)參和形參指向同一個(gè)對(duì)象,在被調(diào)函數(shù)中可利用形參修改和訪問實(shí)參指向的對(duì)象.傳址常用于兩種情況,一是通過(guò)一次函數(shù)調(diào)用帶回多個(gè)值,二是在被調(diào)函數(shù)中修改主調(diào)函數(shù)中某些變量的值.

        猜你喜歡
        函數(shù)調(diào)用存儲(chǔ)單元數(shù)組
        一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲(chǔ)單元設(shè)計(jì)
        JAVA稀疏矩陣算法
        基于C語(yǔ)言的數(shù)學(xué)菜單的設(shè)計(jì)與實(shí)現(xiàn)
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)形式及實(shí)驗(yàn)驗(yàn)證
        基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測(cè)方法*
        探討C++編程中避免代碼冗余的技巧
        Unity3D項(xiàng)目腳本優(yōu)化分析與研究
        一種成本更低的全新靜態(tài)DRAM存儲(chǔ)單元
        MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
        色吊丝中文字幕| 亚洲精品在线97中文字幕| 日本高清一区二区三区在线观看| 少妇扒开毛茸茸的b自慰| 1717国产精品久久| 色偷偷女人的天堂亚洲网| 日本一区二区三区爱爱视频| 久久天堂av综合合色| 俺来也俺去啦最新在线| 日本少妇被爽到高潮的免费| 水蜜桃在线观看一区二区国产| 国产 一二三四五六| 男受被做哭激烈娇喘gv视频| 91精品国产免费青青碰在线观看| 中文字幕一区二区三区综合网| 久久婷婷色香五月综合缴缴情| 亚洲精品国偷自产在线99正片| 国产在线h视频| 亚洲色图偷拍自拍在线| 尤物在线精品视频| 亚洲精品国产成人AV| 亚洲综合免费在线视频| 国内自拍愉拍免费观看| 亚洲人成网站18禁止久久影院| 欧美高清视频一区| 日本二区三区在线免费| 国产人成无码视频在线观看| 精品国产午夜福利在线观看| 国产丝袜高跟美腿一区在线| 日本av一区二区三区在线| 无套内射无矿码免费看黄| 精品少妇人妻成人一区二区| 亚洲一区二区三区成人网| 国产亚洲精品精品精品| 在线视频你懂的国产福利| 亚洲一区二区三区高清视频| 国产av一区二区三区无码野战| 国产亚洲av手机在线观看| 日本一区二区亚洲三区| 免费一级淫片日本高清| 伊人久久五月丁香综合中文亚洲|