關於C語言中定義結構體問題

2021-06-19 18:27:29 字數 703 閱讀 3355

1、c語言中定義結構體的語法是:

struct 結構體名

;2、在定義了結構體以後,要想使用該結構體,還需要進行結構體變數的宣告,才能在程式中使用該結構體,c語言中定義結構體變數的語法是:

(1)struct 結構體名 結構體變數名;

另外也可以在定義結構體的時候,直接在後面宣告結構體變數,如下的形式:

(2)struct 結構體名

結構體變數名;

3、用關鍵字typedef定義結構體,在c語言中,typedef的作用是為資料型別(包括c語言的內建型別)定義乙個新的名字,就是取別名的意思,用typedef定義結構體的形式如下:

typedef struct 結構名結構體別名;

實際上上面的寫法完成了兩步操作

(1)第一步定義了乙個結構體

struct 結構體名

;(2)第二步為該結構體取了乙個別名

typedef struct 結構體名 結構體別名;

這樣在以後的程式中就可以直接使用結構體別名來宣告變數,而不用再用struct和結構體名來宣告變數了。該種方法是程式中使用最多的情況。

了解了以上的資訊,現在回頭看你提出的問題,很明顯:

第乙個就是結構體的定義;

第二個就是結構體的定義,然後在後面直接宣告變數;

第三個就是結構體別名的使用,省去了程式中每次使用結構體的時候都要用到關鍵字struct。

關於C語言中結構體定義的乙個小問題

首先,有如下 test.c struct a struct b 編譯它 gcc c test.c 因為在定義struct a的時候,編譯器檢測不了struct b的長度,即佔多少記憶體。如果我們把 改為 struct a struct b 再次編譯它 gcc c test.c 這一次編譯通過,因為在...

C語言中結構體

struct oursvoid main struct ours o2 01 結構體整體直接賦值的時候,即使字串也可以直接賦值 o1.str o2.str 錯誤,字串不能直接賦值 字串拷貝的方式 sprintf o1.str,02.str strcpy o1.str,o2.str 3.1 第一種情況...

C語言中關於陣列和結構體

在c語言中使用陣列的時候要時刻注意陣列的範圍以及在程式執行過程中是否會出現陣列越界的情況,本篇說明根據在編寫pat乙級1004題目的 時所犯下的錯誤進行理解陣列。題中需要定義學號和姓名的陣列且學號和姓名不超過10個字元,我的錯誤定義陣列範圍為 char name 10 char course 10 ...