函數與函數使用

在理解函數時,最好把函數名和指針一起理解,這樣你在使用的過程中就會得心應手。



1、函數是C語言程序的主體

2、函數之間是獨立的,可以相互調用,但是需要注意避免互相調用的情況(因爲很容易出錯),確實需要使用時,需要設置好出口條件(return),避免死循環。

3、函數個部分說明:

函數名:編譯時,它就是一個標號,代表一個函數的入口地址

參數:函數的輸入,允許重載的語言中,編譯器把參數作爲函數標誌的一部分,從而確定一個唯一的函數名

返回值:函數的輸入,通常在eax中臨時存放,也可以在棧中存放。

函數體:函數的處理過程,函數功能的具體實現。

4、函數調用:通過提供函數名和參數的方式進行函數調用,這個過程有兩個細節,一是通過函數名所代表的函數入口地址跳轉到函數中執行,二是參數的傳遞,關於參數的傳遞,就是說在函數中,會定義新的變量去接受上層函數中變量的值,C實現時是通過壓站的方式從棧中開闢出新的空間。作爲函數可用的內存變量,然後把參數的值賦值到新開闢出的空間,關於形參、實參、地址傳遞、值傳遞的概念如果從內存的角度去理解都是沒有意義的。面向過程的語言理解起來應該以內存爲根本,其他的都只是現象。

5、函數聲明:這一點是由於在程序中,函數和變量都是符號,所以編譯器爲了明確符號的意義,就要求先定義後使用,但是爲了使函數定義更加靈活,可以吧定義放在後面,彈藥提前告訴編譯器這是一個函數,這就是聲明。

6、遞歸調用:調用函數本身,跟普通的函數調用沒有區別,但是應該在函數的開始處設定好出口條件(return),以免進入死循環。

7、局部變量、外部變量:

局部變量通常是臨時使用的,只能在當前函數中使用,分配的空間在棧中,體現了程序對內存空間的高效實用,外部變量則是全局變量,在全局去存放,佔用的空間要在程序結束時釋放。在所在源文件中,從定義開始到源文件結束有效。

全局變量使程序可讀性、通用型,內存使用效率變差,儘量不要使用。

發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章