好問題。
創(chuàng)新互聯(lián)是專業(yè)的峨眉山網(wǎng)站建設(shè)公司,峨眉山接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行峨眉山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
c語言中的函數(shù)和數(shù)學(xué)中的函數(shù)不一樣。
沒有參數(shù)的函數(shù),有些用了全局變量,所以還是有參數(shù)的,意義就在于分解代碼,做成一個函數(shù)都要取個名字,從函數(shù)就可以知道一段代碼的主要功能了。
不對,在C語言中,傳值有地址傳值和參數(shù)傳值,參數(shù)傳值只能將實參傳值給形參,所以A選項正確。C語言中的外部變量是可以在函數(shù)之間傳遞數(shù)據(jù)的。
C語言中的自動變量是默認(rèn)的變量,實際上是函數(shù)中的局部變量,所以D選項正確。全局變量一經(jīng)定義都是需要分配內(nèi)存單元,在程序運行過程中自始至終都會占用固定的空間,在未知內(nèi)存情況下,最好不要使用全局變量。
函數(shù)調(diào)用時,值可以雙向傳遞,并沒有限制使用全局變量還是局部變量,需要根據(jù)程序的邏輯需要進(jìn)行選擇。
擴展資料
C語言參數(shù)傳遞:
1、值傳遞
參數(shù)傳遞只把變量a的值傳遞給了變量p,此時變量a與變量p是值相同的兩個不同變量,在內(nèi)存不同的兩個地址中,所以對變量p賦值只是修改了變量p的值,并不能修改變量a的值。總結(jié)一句話就是:值傳遞不傳遞變量本身,只傳遞變量的值。
2、引用傳遞
與值傳遞不同,func的參數(shù)是int p,表示引用傳遞。如輸出所示,通過引用傳遞,變量a的地址與變量p是相同的,也就是說引用傳遞把a的地址傳給了變量p,所以對變量p進(jìn)行賦值之后,變量a的值也改變了,因為變量a與變量p實際是同一個變量。
3、指針傳遞
指針傳遞,顧名思義,int *p表明p是一個指針變量,調(diào)用func(a)是把變量a的內(nèi)存地址傳遞過去賦值給指針變量p,此時指針變量p的值是變量a的內(nèi)存地址,故可看到輸出p為efbfde2c(變量a的內(nèi)存地址)。
*p是對指針p的值(即變量a的內(nèi)存地址)進(jìn)行取值,相當(dāng)于*a,所以對*p進(jìn)行賦值也就改變了變量a的值。
當(dāng)然可以,int
main()這個主函數(shù)通常情況下就是沒有參數(shù)的。
使用全局變量進(jìn)行數(shù)據(jù)的傳遞是可以的。
優(yōu)點是:很方便調(diào)用,因為誰都可以使用它,不用很麻煩的傳遞參數(shù)
缺點是:就是應(yīng)為誰都可以使用它,大家都可以修改它,可能導(dǎo)致不可預(yù)測的錯誤,也不便于調(diào)試,當(dāng)程序中變量個數(shù)較多時,一不小心很容易在無意中修改了全局變量的值,導(dǎo)致查找、糾錯麻煩。所以不建議大量使用全局變量。
是指中斷處理函數(shù)不能有輸入?yún)?shù)也不能有函數(shù)返回。因為中斷都是些硬件自動調(diào)用,沒有程序去給他傳遞參數(shù),也沒有硬件去接收參數(shù)。
不過x86計算機的軟中斷可以有參數(shù)傳遞,不過他是用寄存器傳遞的。
帶參數(shù)是因為能傳遞參數(shù)(傳入、傳出),即便返回一個狀態(tài)也是好的,不帶參數(shù)的話只完成了一些全局變量的修改,運行結(jié)果無法監(jiān)控。所以最好還是傳遞參數(shù),如果沒有必要傳入,那么返回個退出狀態(tài)就可以了。