程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C Primer Plus(九)

C Primer Plus(九)

編輯:關於C語言

9.1 函數概述

汗舒適用於完成特定任務的程序代碼的自包含單元。
二:函數使得程序更加模塊化,從而有利於程序的閱讀、修改和完善。
編寫函數代碼之前首先需要考慮的是函數的功能以及函數和程序整體上的關系。

9.1.1 函數示例


一:starbar標識符在不同位置被使用了3次:函數原型告知編譯器其函數類型,函數調用導致該函數的執行,而函數定義則確切指定了該函數的具體功能。
二:函數同變量一樣有多種類型。任何程序在使用函數之前都需要聲明該函數的類型。函數後接分號表明該語句是進行函數的聲明而不是函數的定義。
三:starbar()原型置於main()之前,也可以置於其內。
四:程序把starbar()和main()包含在同一個文件中,您也可以將它們放在不同的兩個文件中。單文件形式比較容易編譯,而使用兩個文件則有利於在不同的程序中使用相同的函數。
五:starbar()中的變量count是一個局部變量。這意味著該變量只在starbar()中可用。

9.1.2 定義帶有參數的函數:形式參量

可以對上樹函數進行變化:

void show_n_char(char ch,int num)
{
int count;
for(count=0;count<WIDTH;count++)
putchar(ch);
}

void show_n_char(char ch,int num):通知編譯器show_n_char()使用名為ch和num的兩個參數,並且聲明了它們的類型。ch和num被稱為形式參數和形式參量,它們是局部變量是函數所私有的。
因為被調函數使用的值是從調用函數中復制而來的,所以不管在被調函數中對復制數值進行什麼操作,被調函數中的原數值不會受到任何影響。
可以使用return從函數中返回一個值。
return語句的另一個作用是終止執行函數,並把控制返回給調用函數的下一個語句。

9.1.3 函數類型

函數聲明需要在使用函數前進行。
函數聲明只是將函數類型告訴編譯器,而函數定義部分則是函數的實際實現代碼。

9.1.4 函數原型

調用函數首先把參數放在一個成為堆棧的臨時存儲區域裡,然後被調函數從堆棧中讀取這些參數。
函數原型是對語言的有力補充。它可以使編譯器發現函數使用時可能出現的錯誤或疏漏。

9.2 遞歸

C允許一個函數調用其本身。這種調用過程被稱作遞歸。
遞歸一般可以代替循環語句使用,使得程序結構優美,但其執行效率卻沒有循環語句高。

9.2.1 函數示例

每一級遞歸都使用它自己的私有變量n。調用是的地址和返回時的地址是相同的。
每一次函數調用都會有一次返回。當程序流執行到某一級遞歸的結尾處時,它會轉移到前一級遞歸繼續執行,是通過遞歸的每一級逐步返回。
遞歸函數中,位於遞歸調用前的語句和各級被調函數具有相同的執行順序。
遞歸函數中,位於遞歸調用前的語句和各級被調函數具有相反的執行順序。
雖然每一級遞歸都有自己的變量,但是函數代碼並不會的得到復制。
遞歸函數中必須包含可以終止遞歸調用的語句。

9.2.2 遞歸的優缺點

優點:為某些編程問題提供了最簡單的解決方法。
缺點:一些遞歸算法會很快耗盡計算機的內存資源。

9.3 多源代碼文件程序的編譯

9.3.1 UNIX

首先假定UNIX系統下安裝了標准的UNIX C編譯器cc。文件file1.c和file2.c中包含有C函數。下面的命令將把這兩個文件編譯在一起並生成可執行文件a.out
cc file1.c file2.c
將生成兩個目標文件file1.o和file2.o
使用下列命令編譯第一個文件並將其鏈接到第二個文件的目標代碼。
cc file1.c file2.o

9.3.2 Linux

gcc file1.c file2.c
gcc file1.c file2.o

9.3.3 Windows

Windows系統下的編譯器是面向工程的。工程描述了一個特定的程序所使用的資源。
運行多文件時,需要使用相應的菜單命令將源代碼文件加入到一個工程之中。
如果把main()函數放在第一個文件中而把自定義函數放在第二個文件中實現,那麼第一個文件仍需要使用函數原型。
如果把函數原型放在一個頭文件中,就不必每次使用這些函數時輸入其原型聲明。

9.4 指針簡介

指針是一個其數值為地址的變量。
int *ptr=& pooh; 把pooh的地址賦給ptr。ptr為一變量,而&pooh是一個常量。

9.4.1 間接運算符:*

對指針使用間接運算符,可以獲取其指向地址存放的數值。

9.4.2 地址運算符:&

一元運算符&可以取得變量的存儲地址。一個變量的地址可以被看作是該變量在內存中的位置。
%P是輸出地址的說明符。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved