大一C語言學習筆記(5)---函式篇-定義函式需要了解注意的地方;定義函式的易錯點;詳細說明函式的每個組合部分的功能及注意事項
博主學習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) ̄)ブ