博主學習C語言是通過B站上的《郝斌C語言自學教程》,對于C語言初學者來說,我認為郝斌真的是在全網C語言學習課程中講的最全面,到位的一個,這個不是真不是博主我吹他哈,大家可以去B站去看看,C語言這個大標簽下,確實是郝斌老師的點擊量最高,所以說呢,博主的C語言學習筆記都是基于郝斌老師課程上講的知識結合度娘的總結和一些感悟,
首先,函式的格式是: 回傳值型別 函式名(形參1,形參2,.....)
{
函式體(代碼 ~ ~)
}
1.函式體就代碼嘛,咱用的main()函式,{ 這里碼的就是函式體 };
2.函式名就是字面意思,在其他函式中呼叫時,格式就是:函式名(形參/可能沒有);;
3.回傳值型別,分為void(空型別,也就是沒有回傳值)/有回傳值型別(int/char/等等)(所以說void型別函式即使在函式體中敲出了回傳值,也是沒有意義的);回傳值就是 return (這里就是回傳值);
注意回傳值資料型別要與你設定的相同,比如你設定型別為int,而你 return X,那么此函式的回傳值就是‘X’對應的 ASCII碼 ;
4.形參出現在 函式定義 中,在此函式中可以使用, 離開該函式則不能使用; 實參出現在主函式中,進入其他函式后,實參變數也不能使用 , 形參和實參的功能是作資料傳送,子函式被呼叫時, 主調函式把實參的值拷貝給被調函式的形參;形參變數只有在被呼叫時才分配記憶體單元, 在呼叫結束時, 即刻釋放所分配的記憶體單元(由于編譯器的不同,規則可能有點不同);實參可以是常量、變數、運算式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參;
注意:
#回傳值是賦值給整個函式的,利用printf函式輸出時,和整個三目運算子,一大串運算式同理,輔助理解代碼:
#include<stdio.h>
int hanshu(int a)
{
return (a/2==5?1:0);
}
int main()
{
printf("%d\n",(10/2==5?1:0));
//將“10除以2,是否等于5,是則回傳1,反之回傳0”的結果以%d的形式輸出
printf("%d\n",hanshu(10));
//實參10將自己拷貝給hanshu(a)中的形參 a,再return 三目運算子的運算結果
}
#敲形參代碼的作用不只是將實參的資料拷貝給形參,不要忽略這里定義了一個變數來接受實參發送過來的資料,所以這時已經定義了一個變數就不要再在子函式中重復定義此變數名的變數了,輔助理解代碼(錯誤代碼):
#include<stdio.h>
void hanshu(int a)//這里已經定義變數 a 了
{
int a;//第二次....獎勵報錯
printf("%d\n",a);
}
int main()
{
hanshu(10);
}
運行結果:

#函式只要碰到return就會終止
所以此行代碼是此函式執行的最后一行代碼;
#子函式最好不要printf
在你賦予子函式更多的更多功能的同時,也限定它的一些使用范圍,而當你把每個子函式寫成更“小”時,在拼接這些函式時,也有了更多的可能性;
#主函式子函式變數不沖突
子函式和主函式的變數完全是隔絕的,就算變數名相同,它們在也在記憶體中占用著不同的空間
可以分別定義兩個相同名的變數,再利用printf函式查看兩個變數對應的記憶體單元地址來理解,如:

#子函式(形參/無)其實就是return的那個東西(理解);
#子函式的功能最好在旁邊注釋上,可能現在你寫不到100行覺得無所謂,但當參與到上萬代碼的專案時,這就是一個不太好的習慣了;
#主函式可以呼叫定義函式;定義函式不能呼叫主函式;定義函式可以呼叫定義函式(這里需要注意函式宣告的問題);如果你使用函式的位置是在你定義函式之前,那就需要 函式宣告 了,格式:函式名(形參/無); 函式是否需要宣告或宣告在哪里這個問題,由于編譯器的不同,答案也不同(這個東西真沒必要扣,又沒用又無聊的一個東西);
大一弟弟一枚,歡迎批評 ~ ~ (~ ̄(OO) ̄)ブ
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336123.html
標籤:其他
上一篇:rocketmq優雅停機往事
下一篇:Python 歸并排序法
