C語言中,函數參數只能傳值。與傳值對應的是傳引用,C語言不支持函數參數傳引用,C++語言才支持。
我們提供的服務有:成都網站建設、成都網站制作、微信公眾號開發、網站優化、網站認證、商河ssl等。為1000多家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的商河網站制作公司
C++傳引用函數:
void foo(int a) { a = 3; }
假如a = 2,執行foo(a)后,a = 3。
---
C語言可以模擬傳引用,方法是通過指針扒前來實現:
void foo2(int* ap) { *ap = 3; }
假如a = 2,執行foo2(a)后,a = 3
foo2(a)調用本質上仍然是傳值,只不過傳遞的是指針滑此慶,指針即是地址,地址本質上是一個無符號整數。
如果:
void foo3(int b) { b = 3; }
假如a = 2,執行foo3(a)后,a = 2。這是因為foo3(a)調用過程中,a值傳給形參b,修改b的值與實參a無關。
注意到,foo3(a)與上述foo(a)傳引用的調用是形式一樣的。
既然C語言通過指針可以實現傳引用調用,為什么C++還要引信握入引用這個特性呢?這是因為C++引入的很多新特性需借助引用來實現,比如,拷貝構造函數等等。
形參和實參擁有分別的存儲空間,即便是指針傳遞,改變的也只可能是這個指針變量所指向的內容,而不是指針變量本身的值,也即,如有指針變量p,那對實參的變化,有可能改變的也只是*p的值,而不是p本身的值。
實參和形參在英文中,argument和parameter經常可以互換使用,但是C99標準規定了:
對于actualargument或actualparameter使用術語argument(譯為實參);對于formalargument或formalparameter使用術語parameter(譯為形參)。
為遵循這一規定,我們可以說形參是變量,實參是函數調用提供的值,實參被賦給相應的形參。因此,在上述示例中,times是pound()的實參,n是pound()的形參。類似地,在函數調用pound(times+4)中,表達式times+4的值是該函數的實參。
擴展資料
函數的調用
第1個函數調用是pound(times),times的值5被賦給n。因此,printf()函數打印了5個井號和1個換行符。第2個函數調用是pound(ch)。
這里,ch是char類型,被初始化為!字符,在ASCII中ch的數值是33。但是pound()函數的參數類型是int,與char不匹配。
程序開頭的函數原型在這里發揮了作用。原型(prototype)即是函數的聲明,描述了函數的返回值和參數。pound()函數的原型說明了兩點:
-該函數沒有返回值(函數名前面有void關鍵字);-該函數有一個int類型的參數。
是核鎮指中斷處理函數不能有輸入參數也不能有函數返回。因為中斷都是些硬件改戚自動調用,沒有程序去給他傳遞參數,也沒有硬件去接收參數。
不過x86計算機的軟中斷可以有參數傳遞核氏陵,不過他是用寄存器傳遞的。
分享題目:c語言函數參數不能傳遞 c函數作為參數傳遞
新聞來源:http://vcdvsql.cn/article10/ddpcggo.html
成都網站建設公司_創新互聯,為您提供App開發、面包屑導航、網站改版、Google、品牌網站建設、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯