新四季網

c語言常用語法結構(C語言知識乾貨系列)

2023-05-14 02:57:35

在前面我們知道變量和數組都可以用來存儲數據,變量可以用來存儲單個數據,數組可以用來存儲一組同類型的數據,但你有沒有發現——它們都只適合單一屬性的數據。那現實生活中,很多對象都是具有多屬性的。例如一個人,都具有姓名、年齡、身高、體重等各種屬性。那該如何是好呢?

別急,C語言中的結構體屬於複合類型,它是其他數據類型構造出的一個新數據類型。結構體可以擁有眾多的成員,而且各成員的數據類型也各不相同。因此,它是非常適合擁有多屬性的對象進行存儲。

結構體Ⅰ,結構體類型的定義

定義格式為:

struct 結構體類型名{ 數據類型 成員名; 數據類型 成員名; ...}; //特別注意此處的分號不要遺忘

下面試著定義關於人的具體類型,例如:

struct Person{ char name[20]; //姓名 int age; //年齡 float height; //身高 float weight; //體重};

特別注意,上面定義的是一個結構體類型,它是不能用於存儲數據的。就好像int 是一個數據類型,它是不能存儲數據一樣。如果要存儲數據需要再定義出該類型的變量,如:

int a;

下面就說一下如何定義結構體類型的變量。

Ⅱ,結構體變量的定義

1,先定義結構體類型,再定義結構體變量,例如:

struct Person p1; //注意:這條語句是定義了struct Person 類型的變量p1。也就是說,結構體類型不光是類型名字本身,前面還需加上「struct」關鍵字。

2,在定義結構體類型的同時定義結構體變量,例如:

struct Person{ char name[20]; //姓名 int age; //年齡 float height; //身高 float weight; //體重} p2;

3,定義無名結構體類型變量,例如:

struct { char name[20]; //姓名 int age; //年齡 float height; //身高 float weight; //體重} p3;

Ⅲ,結構體變量的初始化與賦值

在定義結構體變量時,可以對其進行初始化。結構體變量的初始化方式與數組類似,使用大括號將初始值列表括起來。不過,列表中初始值的類型和順序要與結構體成員的類型和順序匹配。例如:

struct Person p1 = {"Tom",20,1.70f,60.1f};

Ⅳ,結構體成員的訪問

C語言中,使用成員訪問運算符(「.」)來訪問結構體變量的各成員,我們常說的點運算說的就是它了:

結構體變量名.成員名

Ⅴ,結構體的大小

基本數據類型都有相對固定的大小,而結構體是符合數據類型,它的成員的類型、數量都是不固定的,但我們可以通過sizeof運算符來獲取結構體的大小,例如:

printf("Size of the struct Person: %u bytes.\n",sizeof(struct Person));

Ⅵ,結構體的嵌套

C語言中可以將一個結構體作為另外一個結構體的成員,即允許結構體的嵌套使用,如下例子:

//定義一個日期的結構體類型Datestruct Date{ short year; short month; short day;};//然後再Person的結構體中再添加一個Date結構體類型的成員birthday,用來表示人的生日struct { char name[20]; int age; float height; float weight; struct Date birthday; //生日} ;//初始化如下:struct Person ls={"lisi",20,1.52,45.5,{1999,8,28}};//訪問birthday中的成員如下方式ls.birthday.year;ls.birthday.month;

2,結構體的運用

上面介紹了結構體類型與結構體變量之後,下面我們就要學著運用它了。不要讓結構體孤零零的存在,要讓它發揮應用的作用,應該讓它與指針、數組、函數等結合起來,只有這樣我們的代碼才會靈活、高效、優美。

至於結構體與指針、結構體與數組、結構體與函數以及結構體與字符串的打打殺殺,亦或是人情世故,就留給我們自己去體會吧!

寫在最後:對於準備學習C/C 編程的小夥伴,如果你想更好的提升你的編程核心能力(內功)不妨從現在開始!

編程學習書籍分享:

編程學習視頻分享:

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對於C/C 感興趣可以關注小編在後臺私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回復,自動領取就好了!

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了