實際引數(實參):
真實傳給函式的引數,叫實參。實參可以是:常量、變數、表示式、函式等。無論實參是何種型別的量,在形式引數(形參):進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。
形式引數是指函式名後括號中的變數,因為形式引數只有在函式被呼叫的過程中才例項化(分配記憶體單形參例項化之後其實相當於實參的 乙份臨時拷貝元),所以叫形式引數。形式引數當函式呼叫完成之後就自動銷毀了。因此形式引數只在函式中有效。
傳值呼叫
函式的形參和實參分別占有不同記憶體塊,對形參的修改不會影響實參。傳址呼叫
傳值呼叫是把函式外部建立變數的記憶體位址傳遞給函式引數的一種呼叫函式的方式。c裡面數是以補碼方式來儲存的 補碼即原碼除符號位外,全部取反再+1這種傳參方式可以讓函式和函式外邊的變數建立起正真的聯絡,也就是函式內部可以直接操作函式外部
的變數。
1000000000000001取反後是1111111111111110,再+1即1111111111111111
c的整型算術運算總是至少以預設整型型別的精度來進行的。為了獲得這個精度,表示式中的字元和短整型運算元在使用之前被轉換為普通整型,這種轉換稱為整型提公升。
char a,b,c; a=b+c;
b和c的值被提公升為普通整型,然後再執行加法運算。如何進行整型提公升?加法運算完成之後,結果將被截斷,然後再儲存於a中。
整形提公升是按照變數的資料型別的符號位來提公升的
//負數的整形提公升
char c1 =-1
; 變數c1的二進位制位(補碼)中只有8個位元位: 1111111
因為 char 為有符號的 char 所以整形提公升的時候,高位補充符號位,即為1 提公升之後的結果是: 11111111111111111111111111111111
//正數的整形提公升
char c2 =1;
變數c2的二進位制位(補碼)中只有8個位元位: 00000001
因為 char 為有符號的 char 所以整形提公升的時候,高位補充符號位,即為0
提公升之後的結果是:
00000000000000000000000000000001
//無符號整形提公升,高位補0
算術轉換如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的型別,否則操作 就無法進行。下面的層次體系稱為尋常算術轉換。long
double
double
float
unsigned
long
intlong
intunsigned
int//無符號
int//如果某個運算元的型別在上面這個列表中排名較低,那麼首先要轉換為另外乙個運算元的型別後執行運算。
float f =
3.14
;int num = f;
//隱式轉換,會有精度丟失
結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數結構型別的成員
可以是標量、陣列、指標,甚至是其他結構體。
定義和初始化
struct point
p1;//宣告型別的同時定義變數p1
struct point p2;
//定義結構體變數p2
//初始化:定義變數的同時賦初值。
struct point p3 =
;struct stu //型別宣告
;struct stu s =
;//初始化
struct node
n1 =
,null};
//結構體巢狀初始化
struct node n2 =
,null
};//結構體巢狀初始化
結構體成員的訪問結構體變數訪問成員 結構變數的成員是通過點運算子(.)訪問的。
s.age=20;
結構體指標訪問指向變數的成員 有時候我們得到的不是乙個結構體變數,而是指向乙個結構體的指標。
struct stu
;void
(struct stu* ps)
intmain()
;print1
(s);
//傳結構體
print2
(&s)
;//結構體位址傳參
return0;
}//首先print2 如果傳遞乙個結構體物件的時候,結構體過大,引數壓棧的的系統開銷比較大,所以會導致效能的下降。 ∴結構體傳參的時候,要傳結構體的位址。
debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。除錯時候最常使用的幾個快捷鍵release稱為發 布版本,它往往是進行了各種優化,使得程式在**大小和執行速度上都是最優的,以便使用者很好地使用。
f5啟動除錯,經常用來直接調到下乙個斷點處。
f9
建立斷點和取消斷點 斷點的重要作用,可以在程式的任意位置設定斷點。這樣就可以使得程式在想要的位置
隨意停止執行,繼而一步步執行下去。
f10
逐過程,通常用來處理乙個過程,乙個過程可以是一次函式呼叫,或者是一條語句。
f11
逐語句,就是每次都執行一條語句,但是這個快捷鍵可以使我們的執行邏輯進入函式內部(這是最長用
的)。ctrl + f5
開始執行不除錯,如果你想讓程式直接執行起來而不除錯就可以直接使用。
C語言 函式
1 實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生 型別不匹配 錯誤。2 實參可以是常量,變數,表示式甚至是函式。但是在傳遞給函式前,必須有確定的值。3 形參變數只有在被呼叫時才分配記憶體單元,只有在函式內部有效,函式結束後不能再使用。4 實參和形參佔據不同的儲存單元。5 函式預設採用值傳...
c語言 函式
函式是實現某個功能的 段 函式之間的關係是並列的,不能巢狀 函式的定義 函式的返回值型別 函式名 引數的型別 引數名1.正常的函式有三部分 1.函式的宣告 2.函式的定義 3.函式的呼叫 如果函式在定義之前被呼叫的話,需要對函式提前進行宣告,當然在定義之後在呼叫如果沒有宣告也不會提示錯誤 函式的返回...
C語言函式
和變數 控制流 條件一樣 函式也是現代程式語言的基本組成部分。他可以使我們在應用中重複利用一塊 對於 的組織和維護是很有必要的。您將在ios和os x的框架中發現大量的例子。像其他的基礎元素一樣,object c的函式也是建立在c語言函式之上的。這章我們將介紹c語言最重要的方面,包括基本語法 宣告和...