C語言程式設計筆記

2021-10-11 03:26:07 字數 4280 閱讀 4067

編譯源程式生成二進位制**表示的目標程式(乙個二進位制檔案,檔案字尾為obj)

不能直接執行該目標程式,它需要與程式設計環境提供的庫函式進行鏈結,形成可執行的程式(檔案字尾為exe)

如果源程式有語法錯誤,編譯器就會指出該語法錯誤所在,而不生成二進位制**

整型變數所需儲存空間與編譯系統有關,在visual c++中,int型變數占用4個位元組

迴圈體語句只能是一條語句,故用大括號將語句括起來組成復合語句,復合語句在語法上被認為是一條語句

getchar()只能讀入乙個字元,但仍需按下回車才能停止此次讀入

switch中的表示式一般是整形或字元型,不能是字串

else與最靠近它的、沒有與別的else匹配過的if相匹配

通常把呼叫其他函式的函式稱為主調函式,被呼叫的函式稱為被調函式

引數傳遞過程中,將實參的值複製給形參,這種引數傳遞是單向的,只允許實參把值複製給形參

函式宣告的目的主要是說明函式的型別和引數的情況,以保證程式編譯時能判斷對該函式的呼叫是否正確

函式型別為void表示不返回結果

若沒有函式型別宣告,函式型別將被預設定義為int

c語言中把定義在函式內部的變數稱為區域性變數,區域性變數的有效作用範圍侷限與所在的函式內部,形參是區域性變數

c語言還允許定義作用於復合語句中的區域性變數,其有效使用範圍被侷限於復合語句內

定義在函式外而不屬於任何函式的變數稱為全域性變數,全域性變數的作用範圍是從定義開始到程式所在檔案的結束,它對作用範圍內所有的函式都起作用

當函式的區域性變數與全域性變數同名時,在該函式中全域性變數不起作用,而由區域性變數起作用,當函式區域性變數與復合語句的區域性變數同名時,以復合語句為準

函式被呼叫時,系統自動為其區域性變數分配儲存單元,一旦該函式呼叫結束,所有分配給區域性變數的單元由系統自動**,所以又把區域性變數稱為自動變數

自動變數定義形式是:auto 型別名 變數表;在自動變數定義時,auto可以省略

變數的作用範圍和生存週期是兩個不同概念

執行程式時儲存分布為系統儲存區:如作業系統、語言系統(dev c++)和使用者儲存區:又分為程式區(c程式**)和資料區

c語言把儲存所有變數的資料區分為動態儲存區和靜態儲存區

動態儲存區是使用堆疊來管理的,適合函式動態分配與**儲存單元,且動態儲存區中的變數按函式組織

靜態儲存區相對固定,管理較簡單,它用於存放全域性變數和靜態變數

靜態區域性變數,它有區域性變數的作用域和全域性變數的生存週期 靜態變數定義格式:static 型別名 變數表;

靜態變數賦初值只在函式第一次呼叫時起作用,若沒有賦初值,系統將自動賦0

除了靜態區域性變數外,c語言也有靜態全域性變數,它的作用與程式檔案結構有關

有些字元,如回車符、退格符等控制碼,它們不能在螢幕上顯示,也無法從鍵盤輸入,只能用轉義字元來表示

轉義字元由反斜槓加上乙個字元或數字組成,它把反斜槓後面的字元或數字轉換成別的意義

**(為數字)表示八進位制數字所對應的字元,如\102表示字元』b』,\x

(*為數字或字母)表示十六進製制數字所對應的字元

實數也可用科學計數法 格式為:e 或 e (為數字 e\e後面的要為整數)輸入用%le,輸出用%e

『\0』是字串結束符

指標變數的型別不是指指標變數本身的型別,而是指它所指向的變數的資料型別,不同型別指標變數所佔的記憶體空間大小都是相同的

指標的型別和它所指向變數的型別必須相同

int *a=0 是將指標變數初始化為空指標,這裡的0是ascii字元null的值

函式ges()有返回值,如果輸入成功則返回值是字串第乙個字元的位址,如果輸入失敗則返回null

strlen()返回字串有效字元的個數(不包括字元結束符』\0』)

malloc()對所分配的儲存塊不做任何事情,calloc()對整個區域進行初始化

動態儲存釋放函式free(),void free(void p) 功能:釋放動態分配的整塊記憶體空間,p為要釋放空間的首位址

如果兩個結構變數的型別相同,可以直接賦值,將乙個結構變數的所有成員值都複製給另乙個

分配調整函式void realloc(void *p,unsigned size) p必須是以前通過動態儲存分配得到的指標,引數 size為現在需要的空間大小,失敗返回null

結構的定義以分號結束,這是因為c語言中把結構的定義看做一條語句

在定義巢狀的結構型別時,必須先定義成員的結構型別,再定義主結構型別

在程式編譯時,所有出現巨集名的地方都會用巨集定義字串來替換。巨集也常稱為巨集替換。如果巨集定義字串後面跟分號,編譯預處理時把分號也作為巨集替換內容

#define最後跟的"「表示改行未結束,與下一行合起來稱為完整一行。

c語言允許巨集巢狀定義

巨集替換時括號保留

檔案包含(include)的作用時把指定的檔案模組內容插入到#include所在的位置,檔案包含必須以#開頭,這表示編譯預處理命令,它將在程式編譯時起作用

檔案包含中指定的檔名如果使用尖括號,將使用c語言的標準標頭檔案,由編譯程式到c系統中設定好的include資料夾中把指定的檔案包含進來

如果使用雙引號」",則編譯程式首先到當前工作資料夾尋找被包含的檔案,若找不到,再到系統include資料夾中查詢檔案,一般適用於程式設計者自己的包含檔案,也可以自己編寫標頭檔案

.**件通常被稱為標頭檔案

標頭檔案經常用於做一些統一的定義、宣告或符號常量以及結構體、鍊錶等一些資料結構定義

條件編譯,例如:#define f 1 /#if f/…/#else/…/#endif

所有的編譯預處理指令都是在編譯預處理步驟中起作用,與程式真正執行過程無關

對於全域性變數來說,還有一種稱為外部變數的形式。即全域性變數的使用位置先於該全域性變數的定義,在使用之前需要宣告為外部變數 外部變數宣告:extern 變數;

如果乙個程式包括多個檔案模組,要實現在乙個模組中呼叫另一模組中的函式時,就需要對函式進行外部宣告宣告格式為:extern 函式型別 函式名(參數列說明);

一般情況下,關鍵字extern可以省略,編譯程式如果在當前檔案模組中找不到函式定義體,自動認為該函式時外部函式

c語言也允許把函式定義成靜態的,以便把函式的使用範圍限制在檔案模組內,靜態的函式在c語言中也稱為內部函式,定義格式為: static 函式型別 (參數列);

可用%x來以16進製制的方式輸出指標陣列中某個指標變數所指向內容的首位址

在c語言中,函式名代表函式的入口位址。可以定義乙個指標變數,接收函式的入口位址,讓它指向函式,這就是指向函式的指標,也稱為函式指標

函式指標定義的一般格式為:型別名 (*變數名) (引數型別表)

通過函式指標可以呼叫函式,它還可以作為函式的引數

在使用函式指標前,要先對它賦值。賦值時,將乙個函式名賦給函式指標,但該函式必須已定義或宣告,且函式返回值的型別和函式指標的型別要一致

通過函式指標呼叫函式的一般格式為:(*函式指標名)(參數列);

c語言的函式呼叫中,函式名或已賦值的函式指標也能作為實參,此時,形參就是函式指標,它指向實參所代表函式的入口位址

file是c語言為了具體實現對檔案的操作而定義的乙個包含檔案操作相關資訊的結構型別

定義陣列的語句 int a[10] ;可簡化為 num a ;定義如下:typedef int num [10];

檔案指標fp++將意味著指向下乙個file結構(如果存在)

開啟檔案由標準函式fopen()實現,其一般呼叫方式為:fopen(「檔名」,「檔案開啟方式」);

該函式有返回值。如果執行成功,函式將返回包含檔案緩衝區等資訊的file結構位址,賦值給檔案fp,否則,返回null

檔名指出要對哪個具體檔案進行操作,一般要指定檔案的路徑,如果不寫出路徑,則預設與應用程式的當前路徑相同

檔案路徑若包含絕對完整路徑,則定位子目錄用的斜槓"「需要用雙斜槓」\",因為c語言認為"「是轉義符,雙斜槓」\「表示了實際的」"

檔案開啟方式用來確定對開啟的檔案將進行什麼操作,有"r",「w」,「a」,「r+」,「w+」,「a+」,若開啟二進位制檔案,只需加字尾b

c語言允許同時開啟多個檔案,不同檔案採用不同檔案指標指示,但不允許同乙個檔案在關閉前被再次開啟

關閉檔案通過呼叫標準函式fclose()實現,該函式將返回乙個整數,若該數為0表示正常關閉檔案

c語言標準庫stdio.h中提供了一系列檔案的讀寫操作函式,常用的函式有 fgetc() fputc() fpus() fgets() fscanf() fprintf() fread() fwrite()

呼叫feof()來檢測檔案指標所指示檔案的位置是否到了檔案末尾

fgets()用來從文字檔案中讀取字串,呼叫格式為:fgets(s,n,fp);

c語言標準庫中也提供了一系列與檔案指標的位置和狀態有關的函式,有rewind() fseek() ftell() feof() ferror() clearerr()

C程式語言 筆記

第二章 型別符號表示式 2.9 按位與 可用於遮蔽某些二進位制位 如 n 0177 按位或 可以將某些位置1 如 n 011 按位取反 可以用於如將後六位置0 n 077 這樣的用法比 n 0177700這樣的表示式好很多,前者可移植性強。左移右移的右值不能為負 return x p 1 n 0 2...

《C語言程式設計》筆記

2.stdio是standard input output 的縮寫,即標準輸入輸出。有關輸入輸出的函式的格式均定義這裡 3.float 4個位元組,double 8個位元組,short 2個位元組,int和long 4個位元組 這裡指的是vs,有一些軟體不一樣 4.314.159 規範化的指數形式為...

c程式語言筆記1

列印最長輸入行的程式 include define maxline 1000 允許的輸入行的最大長度 int getline char line,int maxline void copy char to,char from 列印最長的輸入行 main if max 0 printf s longe...