前言:這一週數據結構的視頻筆記沒有總結(主要是沒有看多少),寫博客只有翻出原來的存貨,我學習C時函數部分的筆記,其中關於函數具體的聲明、定義、調用等具體操作可以看具體的書本理解,但是函數和main( )函數之間的值傳遞纔是要關注的重點。
一、函數的定義和基本形式、
1、定義:函數(function)是完成特定獨立程序的代碼單元;通過使用函數,使得程序更加的模塊化,從而提高了程序代碼的可讀性,方便後期修改、完善;
2、基本形式(由一個例子引出)
/* 函數舉例1 */
#include<stdio.h>
#define NAME "Star Jiang."
#define ADDRESS "101 Malanpo Street."
#define PLACE "NHCU-sao."
#define WIDTH 40
void starbar(void); //函數原型
int main(void)
{
starbar(); //函數調用
printf("%s\n",NAME);
printf("%s\n",ADDRESS);
printf("%s\n",PLACE);
starbar();
return 0;
}
void starbar(void) //函數定義
{
int count;
for(count = 1; count <= WIDTH;count++)
putchar('*');
putchar('\n');
}
三、函數的調用和返回
1、函數的調用
- 調用形式:函數名(參數值)
starbar( );
- ( )起到了表示函數調用的作用
- 即使沒有參數也需要
- 如果有參數,則需要給出正確的數量和順序;
2、函數的返回
1)函數知道每一次哪裏調用它,它就返回到正確的位置;
2)從函數中的返回值
- return停止函數的執行,並送回一個值
- return;
- return 表達式;
- 注意:單一出口設計理念,一般就安排一個返回值;
- 如果需要返回多個值,應給考慮用指針返回;
3、沒有返回值的函數
調用形式:
- void 函數名(參數表)
- 不能使用帶值的return
- 可以沒有return
- 調用函數時不能做返回值的賦值;
三、函數的值傳遞
1、調用函數
- 如果函數有參數,調用時必須傳遞給它數量、類型正確的值;
如:
double max(double a,double b); //函數原型
{
}
int main()
{
max(12.34,18.57); //函數調用
}
double max(double a,double b) //函數定義
{
}
- 可以傳遞給函數的值是表達式的結果,這包括
字面量;
變量;
函數的返回值;
計算的結果;
int a,b,c;
a = 5;
b = 6;
c = max(10,12); //字面量
c = max(a,b); //變量
c = max(c,23);
c = max(max(23,25),a); //函數的返回值
c = max(23+25,b); //計算的結果
2、值傳遞細節
- 每個函數都有自己的變量空間,參數也位於這個獨立的空間,和其它函數沒有關係;
- 過去,對於函數參數表中的參數,叫做“形式參數”,調用參數時給的值叫“實際參數”;
- 由於容易讓初學者誤會實際參數就是實際在函數中進行計算的參數,誤會調用參數時是“把變量而不是值傳進去”。
- 注意:C語言在調用函數時,永遠只能傳值給函數;