c結構的應用中,常用到的有:結構陣列、結構巢狀、指向結構的指標、向函式傳遞結構資訊、c99標準的復合文字和結構、結構內容在檔案中的儲存等。
下面我將分別簡述這幾個方面,由於最近上課的時間太多了,偶然有空來更新下,可能會有點散亂:
一、結構陣列
結構陣列和一般的陣列沒有太大的區別,主要分別一點:乙個結構實際上就是一種新的資料型別。在結構陣列中的每個元素也就是一種結構資料型別。宣告也和其它的陣列一樣的。如:
struct book, //這裡是對內部結構進行初始化。
//注意結構初始化時,各個成員之間用逗號分隔。
169.0,
"student"
printf("hello ,%s!\n",study.handle.first_name);
上面的最後乙個printf()函式中的study.handle.first_name,這個語句可從左到右的解釋: (study.handle).first_name
即:先找到study,然後找到study的成員handle,再找到handle的成員first_name。
三、指向結構的指標
在這之前先說說指標的好處。不管做什麼,先要明白做這個是為了什麼嘛!呵呵
第一,就像指向陣列的指標比陣列本身更容易操作一樣,指向結構的指標通常都比結構本身更容易操作。
第二,在一些早期的c實現中,結構不能作為引數被傳遞給函式,但指向結構的指標可以。
第三,許多奇妙的資料表示都使用了包含指向其他結構的指標的結構。
對於程式上的使用,用例子來解釋應該是最好的。例如下面的程式:
struct names ; //陣列
(struct names );//結構
以上的形式是有那麼一點點的奇怪,但是對於新鮮事物的認知可以讓你更加了解它。它們主要是只有乙個資料型別,而沒有陣列/結構名。那麼我們在自已的**中如何使用它們呢?
一:它可以作為上層函式和下層函式之間的引數傳遞。如果你的函式引數是乙個結構,你可以復合文字作為乙個實際的引數傳遞。
二:你的復合文字的位址和其它的結構或者陣列是一樣的,你可以把它們的位址進行傳遞。它們的儲存和其它的同型別資料一樣只是沒有個陣列名和結構名而已,所以復合文字也可以指定初始化乙個成員變數。宣告在函式外面的為靜態儲存,宣告在函式裡面的為自動儲存(函式呼叫時是對資料放入堆疊中,呼叫完成後再全部清出棧。即:c中的子函式可以全包含在外部函式中)。
結構在檔案中的儲存
先解釋兩個專業名詞:記錄,乙個結構中儲存的整套資訊。字段,單個的專案。
C 結構體的應用
注意,第17行這裡結構體型別定義的形參只能是引用型別的,memcpy與strcpy的比較 memcpy是複製位址內的內容,例如如下 所示 從 char s開始賦給array,位址賦值的大小是s strcpy只能複製字串,其他的複製字串以外的內容。結構體作為型別進行寫入和讀出 include incl...
C語言結構體的應用
1.結構體 1 結構體宣告 結構體可以用來給c語言增加新的資料型別,新的資料型別有多個基本型別組成的 結構體本身是一種資料型別,宣告乙個結構體不占用記憶體 使用結構體之前必須先宣告,宣告結構體使用struct關鍵字 宣告語法 struct 結構體型別名 結構體變數 c語言中不能再結構體中加入函式,但...
C語言結構體的應用
c語言中另乙個重要的機制 結構體,所謂結構體就是把一些普通變數按照一定的格式組成乙個全新的變數型別,從而為其它程式所使用。而使用這個新變數型別與普通變數型別的方法 一樣。定義結構體很簡單,我們只需要為其指定乙個名稱,並在其中定義這個結構體所需要使用的屬性即可。下面是乙個函式用於計算矩形的面積面積 i...