C資料型別

2021-09-08 10:35:45 字數 2262 閱讀 7918

結構體

因為陣列中各元素的型別和長度都必須一致,以便於編譯系統處理。為了解決這個問題,c語言中給出了另一種構造資料型別——「結構(structure)」或叫「結構體」。它相當於其它高階語言中的記錄。

「結構」是一種構造型別,它是由若干「成員」組成的。每乙個成員可以是乙個基本資料型別或者又是乙個構造型別。結構既是一種「構造」而成的資料型別,那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和呼叫函式之前要先定義函式一樣。

定義乙個結構的一般形式為:

struct 結構名;

成員表列由若干個成員組成,每個成員都是該結構的乙個組成部分。對每個成員也必須作型別說明,其形式為:

型別說明符 成員名;

struct stu;

在這個結構定義中,結構名為stu,該結構由4個成員組成。第乙個成員為num,整型變數;第二個成員為name,字元陣列;第三個成員為***,字元變數;第四個成員為score,實型變數。應注意在括號後的分號是不可少的。結構定義之後,即可進行變數說明。凡說明為結構stu的變數都由上述4個成員組成。由此可見, 結構是一種複雜的資料型別,是數目固定,型別不同的若干有序變數的集合。

指標型函式

所謂函式型別是指函式返回值的型別。在c語言中允許乙個函式的返回值是乙個指標(即位址),這種返回指標值的函式稱為指標型函式。定義指標型函式的一般形式為:

型別說明符 *函式名(形參表)

其中函式名之前加了「*」號表明這是乙個指標型函式,即返回值是乙個指標。型別說明符表示了返回的指標值所指向的資料型別。如:

int *ap(int x,int y)

表示ap是乙個返回指標值的指標型函式,它返回的指標指向乙個整型變數。

本程式是通過指標函式,輸入乙個1~7之間的整數,輸出對應的星期名。

main()

char *day_name(int n);

return((n<1||n>7) ? name[0] : name[n]);

}本例中定義了乙個指標型函式day_name,它的返回值指向乙個字串。該函式中定義了乙個靜態指標陣列name。name陣列初始化賦值為八個字串,分別表示各個星期名及出錯提示。形參n表示與星期名所對應的整數。在主函式中,把輸入的整數i作為實參,在printf語句中呼叫day_name函式並把i值傳送給形參n。day_name函式中的return語句包含乙個條件表示式,n值若大於7或小於1則把name[0]指標返回主函式輸出出錯提示字串「illegal day」。否則返回主函式輸出對應的星期名。主函式中的第6行是個條件語句,其語義是,如輸入為負數(i<0)則中止程式執行退出程式。exit是乙個庫函式,exit(1)表示發生錯誤後退出程式,exit(0)表示正常退出。

應該特別注意的是函式指標變數和指標型函式這兩者在寫法和意義上的區別。如int(*p)()和int *p()是兩個完全不同的量。

int (*p)()是乙個變數說明,說明p是乙個指向函式入口的指標變數,該函式的返回值是整型量,(*p)的兩邊的括號不能少。

int *p()則不是變數說明而是函式說明,說明p是乙個指標型函式,其返回值是乙個指向整型量的指標,*p兩邊沒有括號。作為函式說明,在括號內最好寫入形式引數,這樣便於與變數說明區別。

對於指標型函式定義,int *p()只是函式頭部分,一般還應該有函式體部分。

指標

指標是c/c++的精華,如果未能很好地掌握指標,那c/c++也基本等於沒學。

所以,我也希望讀者朋友能好好體味這些例子。三個問題:

a)什麼是指標?

b)什麼是陣列?

c)陣列和指標之間有什麼樣的關係?

二級指標是經常用到的,尤其與二維陣列在一起的時候更是令人迷糊。例如:

char **p;

const與volatile

關鍵字const的作用是為給讀你**的人傳達非常有用的資訊,實際上,宣告乙個引數為常量 是為了告訴了使用者這個引數的應用目的。

通過給優化器一些附加的資訊,使用關鍵字const也許能產生更緊湊的**。

合理地使用關鍵字const可以使編譯器很自然地保護那些不希望被改變的引數,防止其被無意的**修改。簡而言之,這樣可以減少bug的出現。

儲存類修飾符

變數和函式的屬性包括資料型別和資料的儲存類別,儲存類別指資料在記憶體中儲存方式(靜態和動態),包含auto,static,register,extern四種。

記憶體中。具體點來說記憶體分為三塊:靜態區,堆區,棧區。外部變數和全域性變數存放在靜態區,區域性變數存放在棧區,動態開闢的記憶體存在堆區。

C 資料型別

一般來說,計算機要儲存和處理不同的資料型別,在c 中有基本的資料型別和使用者自定義資料型別以及引用型資料。我們先學習下基本的資料型別,也就是系統自帶的資料型別。每種資料型別都要佔據系統記憶體的一定空間,例如c 中的整數int 乙個整數佔4個位元組,也就是32位 計算機是用0和1二進位制來表示和處理資...

c 資料型別

型別可分為 值型別,引用型別 值型別 直接存放真正的資料,值型別都有固定的長度,值型別的變數都儲存在 堆疊 stack 上。作為值型別的變數,每個都有自己的資料,因此對乙個變數的操作不會影響其他變數。引用型別 儲存讀資料的記憶體位址的引用,位於受管制的堆 heap 上作為引用型別的變數可以引 用同一...

C 資料型別

bool system.boolean 1位元組 byte system.byte 1位元組無符號 sbyte system.sbyte 1位元組有符號 short system.int16 2位元組 ushort system.uint16 2位元組 int system.int32 4位元組 u...