<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
C語言結構體由一系列相同或者不同型別的資料構成的集合,結構體型別就是以struct關鍵字定義的資料型別。
結構體的格式如下:
struct 結構名稱 { 結構體所包含的資料成員,包括變數陣列等 } 結構變數 ;//結構變數可以指定一個或多個
舉例:
struct Student { char name[10]; char sex[2]; int age; }Stu
先看下結構體變數如何初始化
#include <stdio.h> #include <string.h> struct Student { char name[10]; char sex[5]; int age; }Stu = {"Mike","man",22}; int main(int argc, char *argv[]) { printf("name:%snsex:%snage:%dn",Stu.name,Stu.sex,Stu.age); }
初始化結構體變數很簡單,直接在結構體變數後面賦值。
結果:
#include <stdio.h> #include <string.h> //定義Student結構體 struct Student { char name[10]; char sex[5]; int age; }Stu; void print(struct Student stu) { printf("Student name:%sn",stu.name); printf("Student sex:%sn",stu.sex); printf("Student age:%dn",stu.age); } int main(int argc, char *argv[]) { struct Student stu1; strcpy(stu1.name,"will"); strcpy(stu1.sex,"man"); stu1.age = 20; print(stu1); //Stu Stu.age=11; print(Stu); }
從這個範例可以看出:將結構體作為引數傳入函數,定義結構體時,我們可以在;前面定義結構體變數, 這樣就不需要再定義結構變數,如:struct Student stu1;假設stu1在定義結構體時就定義變數,那麼就可以直接賦值。
結果:
可以看出第二個學生列印,因為在定義結構體時就已經定義結構變數,所以可以直接賦值。
範例演示,傳入結構體指標
#include <stdio.h> #include <string.h> struct Student { char name[10]; char sex[5]; int age; }Stu; void print(struct Student *stu) { printf("Student name:%sn",stu->name); printf("Student sex:%sn",stu->sex); printf("Student age:%dn",stu->age); } int main(int argc, char *argv[]) { struct Student stu1; strcpy(stu1.name,"will"); strcpy(stu1.sex,"man"); stu1.age = 20; print(&stu1); Stu.age=11; print(&Stu); }
這裡的範例和上面例子的區別主要是:
1.將定義的變數改為指標struct Student *stu。
2.指標賦值時使用->。
3.使用列印函數時,改為取地址。
結果一致
1)、struct:struct可以直接使用結構體名字宣告結構體。
2)、typedef struct:typedef struct為修飾結構體,結構體有了別名,通過結構體別名宣告結構體。
1)、struct:struct定義的結構體變數,可直接存取結構體成員。
2)、typedef struct:typedef struct定義的結構體變數,不可直接存取結構體成員,必須顯式的通過結構體變數來存取成員。
1)、struct:想重新定義struct結構體的話,必須重寫整個結構體。
2)、typedef struct:想重新定義typedef struct結構體的話,可以通過別名來繼承結構體進行重新定義。
舉例:
可以看到:
使用typedef struct定義的結構體,我們通常是使用別名進行操作,而且在使用時也簡化了使用方法,例如:Stu s1,相當於宣告物件一樣,如果使用struct,那麼就要寫成struct Student stu1;。
如果直接使用結構體名稱那麼會報錯:
錯誤範例:
報錯結果:
改回別名操作,結果:
到此這篇關於C語言中結構體範例解析的文章就介紹到這了,更多相關C語言結構體內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45