C語言函數——聲明、調用及值傳遞方式

前言:這一週數據結構的視頻筆記沒有總結(主要是沒有看多少),寫博客只有翻出原來的存貨,我學習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語言在調用函數時,永遠只能傳值給函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章