引言:資料經常以成組的形式存在。在c中,使用結構可以把不同型別的值存放在一起。
結構的宣告有兩種
1、struct ******;然後用標籤******去宣告結構體變數。
2、typedef struct******;然後用******去宣告結構體變數。此時******是個型別名,而不像上面的******是個標籤。
結構成員可以是標量、陣列、指標甚至是其他結構。
結構成員的直接訪問用點操作符(.)訪問。例如****** a;a.a或a.b或a.c。
結構成員的間接訪問用->操作符訪問,它是針對結構指標使用的。例如****** *a;a->a或a->b或a->c。
結構的自引用是結構的成員裡包含結構本身,但這種包含不能是直接包含,而應該包含的是指向該結構的指標。
結構作為函式引數時,一般使用指向結構的指標。向函式傳遞指標的缺陷在於函式現在可以對呼叫程式的結構變數進行修改。如果不希望如此,可以在函式使用const關鍵字來防止這類修改。而且,傳遞結構指標比傳遞結構本身更有效率。
總結:
1、具有相同成員列表的結構宣告產生不同型別的變數。
2、使用typedef為乙個子引用的結構定義名字時應該小心。
3、向函式傳遞結構引數是低效的。
4、把結構標籤宣告和結構的typedef宣告放在標頭檔案中,當原始檔需要這些宣告時可以通過#include指令包含。
5、結構成員的最佳排列形式並不一定就是考慮邊界對齊而浪費記憶體空間最少的那種排列形式。
C語言天天練(二) statickeyword
引言 statickeyword不僅能夠修飾變數。並且能夠修飾函式。了解它的使用方法,不僅對閱讀別人的 有幫助,也有助於自己寫出更加健壯的程式。使用方法 用於不同的上下文環境時,statickeyword具有不同的意義。一 當它用於函式定義時,或用於 塊之外的變數宣告時,statickeyword用...
C語言天天練(二四) 記憶體分配
引言 對於c語言程式,了解它執行時在記憶體中是怎樣分配的對於我們理解它的執行機制是很實用的。以下就總結一下c語言程式的一些記憶體分配知識。一 一段c程式。編譯連線後形成的可執行檔案一般有 段 資料段 堆和棧等幾部分組成。當中資料段又包含僅僅讀資料段 已初始化的讀寫資料段和未初始化的bss段。例如以下...
C語言天天練(二十) scanf函式詳解
引言 scanf函式雖然是學習c語言時比較早就接觸的乙個函式,但在使用過程中,發現真正掌握它卻並不容易。本文就通過各種例子來詳細的總結一下該函式的各種用法,假設它的呼叫格式為 scanf 格式化字串 位址表 1 一般使用scanf函式時都是為某個變數賦值,不考慮它的返回值。但是任何函式都是需要返回的...