不是void型的函式一定要有返回值嗎 一定要有return語句嗎 無參函式可以有返回值嗎?

時間 2021-05-29 23:05:27

1樓:逗泥丸的平方

做題的話,就做題吧,照著答案來。

學習程式設計的話,就照著IDE來。

工程開發,照著專案規範來。(沒規範就先照著老大來,沒老大就照著古人來)

等到有一定經驗,有一定地位了,可以自己分辨好壞了,就可以傳播一些自己的想法了。

2樓:

(抖個機靈)程式執行結果如下:

/usr/bin/ld: /tmp/test-5eee88.o: in function `fun':

test.c:(.text+0x30): undefined reference to `pritnf'

clang-9: error: linker command failed with exit code 1 (use -v to see invocation)

原始檔test.c (我可是很忠實地保留了錯誤拼寫和夏姬八寫的縮排)

intd=1

;fun

(intp)

main

()編譯命令

clang -std=c89 -include stdio.h test.c

正經回答:

C89標準裡規定沒有指定返回型別的函式其返回型別為int,且可進一步由declarator修飾。比如:

f();

// 等同 int f();*f

();//

等同int*f

();(另外,預設返回型別在C99已經被棄用,但是gcc和clang 用-std=c99對此也只報個warning)

針對你的問題:

不是void型的函式一定要有返回值嗎?一定要有return語句嗎?

不是,但一般編譯器會給你報個warning(-Wreturn-type),但是你要是用了這個返回值,那裡面究竟是什麼東西就說不好了。在x86上eax一般用來放返回值,所以沒有return的函式其返回值會是eax的殘留內容。

另外,main函式的返回值是個特例,在C99標準及以上,沒有return的main函式相當於在末尾有乙個return 0;但是C89標準下main函式如果沒有return,那麼情況和普通函式一樣。

無參函式可以有返回值嗎?

引數和函式能不能返回值沒有任何關係。

(說個題外話,C語言標準已經進化到C2x了,剛看cppreference發現的,我都驚了

3樓:知之為知之不知瞎白話

一般有返回值的叫函式,沒返回值的叫過程。

非void型的必須有返回值,一定要有return。返回值的型別還要跟函式的型別一樣。

有沒有引數和有沒有返回值之間沒有必然關係。所以無引數也可以有返回值。

引數還分為按值傳遞和引用傳遞。像圖中的fun是按值傳遞的,所以對實參沒影響。

回到正題:

fun過程裡定義了乙個區域性變數d覆蓋了第一行的全域性變數,p++又沒什麼意義,所以fun實際是列印乙個5+3的結果8。

然後main裡使用全域性變數的d,列印的是1+3的結果4。

結婚是不是一定要有房子?

我是四川的,我男朋友河南的,我家裡不允許我遠嫁所以我物件來成都了 這個是前提 他比我大六歲,他今年27了 我和他在一起一年多,他沒給家裡提起過我,昨天我給他說我家裡的要求就是要男方買套房,彩禮意思意思就行了。他說你對婚姻的概念就是錢和房子嗎,那你不如直接嫁給房子,我寧願拿首付給彩禮也不願在成都買房。...

做人做事,野心是不是一定要有?

泡芙 做事可以,有野心。野心做人不,不一定要有野心,但是當你的能力與你的野心不相匹配時,你就會有挫敗感,所以野心要隨著你的能力慢慢的增加,要腳踏實地 a一笑生花 一定要有野心!曾經美國有位人就成功人士死後就問窮人缺的是什麼?誰回答對就可以繼承他的財產而結果卻是沒有乙個人答對只有乙個小女孩說是野心!可...

考研是不是一定要有後門才能上?

國表社棟 不需要。考研,即參加碩士研究生入學考試。其英文表述是 Take part in the entrance exams for postgraduate schools 考研首先要符合國家標準,其次按照程式 與學校聯絡 先期準備 報名 初試 調劑 複試 複試調劑 錄取等方面依次進行。碩士研究...