當某段獨立邏輯需重複使用多次時,將其抽取為函數可消除重複代碼、提高可維護性。以列印星號圖形為例:
* ** *** **** * ** *** ****
上半部與下半部完全相同,若直接寫兩遍迴圈,不僅冗長,修改時也需改兩處。
#include <stdio.h>
void star() // 函數宣告與定義,無參數、無傳回值
{
int i, j;
for (i = 1; i <= 4; i++)
{
for (j = 1; j <= i; j++)
printf("*");
puts(""); // 換行
}
return; // 可省略,void 函數結束自動返回
}
int main()
{
puts("The first one:");
star(); // 第一次呼叫
puts("The second one:");
star(); // 第二次呼叫
return 0;
}
main 開始執行star() 呼叫,控制權轉移至 star 函數體star 內的迴圈列印return(或函數結尾),控制權返回 main 緊接著的下一行star(),重複上述過程void star(void);,明確表示不接受參數star() 代表「參數未指定」,star(void) 才是「嚴格無參數」star 內的 i <= 5