亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

結構體和聯合體

2019-11-06 06:07:30
字體:
來源:轉載
供稿:網友

1.訪問結構體成員,聲明和初始化結構體

一個結構體是一種能同時處理多種數據類型數據的數據類型。 何時為結構體分配內存?

聲明結構體類型時,并不會為結構體分配內存,只有單聲明結構體變量時,才會為結構體聲明類型。

下面通過實例來理解如何創建一個結構體,如何聲明結構體變量,以及如何向結構體變量中讀寫數據。 eg1:編寫一個C程序,創建一個包含多種類型成員的ebill結構體。

/*使用結構體顯示電子賬單*/#include<stdio.h>#include<string.h>void main(){ struct ebill { int mno; char name[20]; int PRevious; int present; int units; float charge; }; struct ebill eb; eb.mno=1005; strcpy(eb.name,"Raj Kumar"); eb.previous=500; eb.present=750; eb.units=eb.present-eb.previous; eb.charge=eb.units*4.50; printf("/nMeter no:%d",eb.mno); printf("/n------name:%s",eb.name); printf("/n-----previous:%d",eb.previous); printf("/n------present:%d",eb.present); printf("/n------units:%d",eb.units); printf("/n------charge:%f",eb.charge);}

結果如下:這里寫圖片描述

2.結構體指針

一個結構體指針是指用來引用結構體實例的指針。可以像聲明結構體變量一樣聲明結構體: struct ebill *ptr; 一旦結構體指針被聲明,可以使用結構體指針成員操作符或箭頭操作符來引用結構體實例的數據成員。如: ptr->mno.

3.結構體數組

聲明一個結構體數組:struct ebill eb[50],訪問結構體的成員變量:eb[i].mno;eb[i].name;等。

fprintf()函數: 1.在顯示器上顯示輸出。 fprintf(stdout,”Andhra Pradesh”);stdout代表標準輸出設備,例如顯示器。 顯示一個寬度為20個字符的字符串代碼如下: fprintf(stdout,”%20s”,name); 2.fprintf()函數可以將輸出重定向至打印機。 fprintf(stdprn,”Hyderabad”); stdprn代表連接至計算機的標準打印機,其后緊跟著的字符串將會被發送至打印機,最后打印到紙上。 3.fprintf()也可以將輸出重定向到一個文件,這樣輸出就可以在后續的某個時刻被再次使用。 fprintf(fptr,”%20s”,empname);

4.結構體指針數組

struct ebill *p[50];這里一共50個指針,如果想動態為結構體實例分配內存,可以使用malloc函數,如下: p[i]=(struct ebill *)malloc(sizeof(struct ebill))

5.向函數傳遞結構體參數

可以將整個結構體作為參數傳遞給函數。 eg: struct student { int rno; char name[20]; } 向display( )方法傳遞student結構體,函數聲明如下: void display(struct student st) 這里的st是結構體變量。在函數體內,可以使用st來訪問這個結構體成員,如:st.rno或st.name. 另外一種向函數傳遞結構體類型參數的方法是傳遞結構體指針。eg: void display(struct student *ptr),現在,在函數體內可以這樣引用結構體成員:ptr->rno和ptr->name。 eg:結構體傳參

#include<stdio.h>#include<string.h>struct student{ int rno; char name[20];};void display(struct student st);void main(){ struct student s; s.rno=10; strcpy(s.name,"Priya"); display(s);}void display(struct student st){ printf("/nrno=%d",st.rno); printf("/nName=%s",st.name);}輸出:rno=10Name=Priya

上面的實例也可以使用結構體指針傳遞結構體實例。 也可以從一個函數返回一個結構體。 為了實現該目的,可以從函數中返回一個結構體指針:struct student * display (struct student *ptr) eg:向函數傳遞結構體指針參數,并從函數返回一個結構體指針。

#include<stdio.h>#include<string.h>struct student{ int rno; char name[20];};struct student s={10,"Priya"};struct student *p1,*p2;struct student *display(struct student *ptr);void main(){ p1=&s; p2=display(p1); printf("/nrno=%d",p2->rno); printf("/nName=%s",p2->name);}struct student *display(struct student *ptr){ ptr->rno++; strcpy(ptr->name,"Lakshmi"); return ptr;}

6.拷貝結構體變量 可以將一個結構體實例中的數據拷貝到另外一個結構體實例中,只要兩者類型相同。

struct employee{ int id; char name;}struct employee e1,e2;

這里e1,e2是結構體變量。我們想將e1的內容拷貝到e2中。有兩種方式可以實現該目的: 1.將e1的數據成員逐個拷貝到e2中: e2.id=e1.id; strcpy(e2.name,e1.name); 2.將一個結構體變量賦值給另一個結構體變量。使用方式如下: e2=e1. 將整個結構體的實例賦值給另一個結構體的實例是可行的,但是對于數組不可以這樣操作。如果想要將一個數組中的元素拷貝到另外一個數組中,需要逐個處理數組中的元素。

#include<stdio.h>#include<string.h>struct student{ int rno; char name[20];};struct student s={10,"Priya"};void main(){struct student s={10,"Priya"};struct student y; y=s; printf("/nId=%d",y.rno); printf("/nName=%s",y.name);}

結構體和數組的區別: 1)數組只能存儲同一類型的數據。結構體可以存儲不同類型的數據。 2)如果想將一個數組的元素拷貝至另外一個數組,則需要逐個元素拷貝。而將一個結構體實例的數據拷貝至另外一個結構體實例,只需要逐個拷貝或者直接將結構體變量賦值給另外一個結構體變量。

7.嵌套結構體 可以在一個結構體里面包含另外一個結構體。

1)雇員的id和名字。struct employee {int id;char name[20];}2)雇員生日的年月日。struct dob{ int dd; int mm; int yy; }

code如下:

struct employee{ int id; char name[20]; struct dob d; }; struct employee e;

結構體變量既可以當作左值也可以當作右值來處理。

編寫一個結構體函數用來查找系統日期和時間。

#include<stdio.h>#include<dos.h>void main(){ struct data d; struct time t; getdata(&d); gettime(&t); printf("/n%2d/%2d/%2d",d.da_day,d.da_mon,d.da_year); printf("/n%2d:%2d:%2d",t.ti_hour,t.ti_min,t.ti_sec);}

10.聯合體

聯合體與結構體比較類似,用關鍵字union來聲明。 一個聯合體可以有任意多個數據成員,但是只為一個聯合體實例分配與最大數據成員所占內存大小相等的內存塊,其他較小的數據成員也存放在該內存塊中。從聯合體的內存布局來看,它比結構體更節省內存,因為所有的數據成員都存放在同一塊內存中。這樣做的后果是,每次只能向聯合體實例中存儲一個數據成員,并且會覆蓋之前放在該內存塊的其他數據成員。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品影视| 欧美日韩国产一区二区三区| 欧美丰满少妇xxxxx| 久久国产精品电影| 国产精品电影网站| 欧美性xxxx极品hd满灌| 久久久免费在线观看| 91在线免费视频| 亚洲aaaaaa| 91精品视频在线| 欧美性精品220| 中文一区二区视频| 亚洲精品天天看| 欧美最猛性xxxx| 精品久久久久久国产| 欧美激情在线观看| 国产97免费视| 国产一区二区三区高清在线观看| 国产亚洲精品久久久久久| 日韩av在线一区| 美女视频黄免费的亚洲男人天堂| 日韩精品福利在线| 亚洲精品天天看| 欧美日韩不卡合集视频| 国产午夜精品一区理论片飘花| 神马久久桃色视频| 国产精品海角社区在线观看| 亚洲精品国产精品久久清纯直播| 精品丝袜一区二区三区| 国产精品嫩草影院久久久| 最近中文字幕mv在线一区二区三区四区| 日韩亚洲欧美成人| 色偷偷偷综合中文字幕;dd| 久久亚洲精品小早川怜子66| 亚洲爱爱爱爱爱| 91最新在线免费观看| 国产精品入口免费视频一| 久久国产精彩视频| 久久九九全国免费精品观看| 国产精品永久免费| 亚洲成人久久网| 亚州欧美日韩中文视频| 精品动漫一区二区三区| 日韩欧美在线视频日韩欧美在线视频| 欧美专区国产专区| 国产精品自产拍在线观看中文| 欧美乱妇高清无乱码| 国产精品永久免费视频| 正在播放欧美一区| 亚洲欧洲xxxx| 日韩av片永久免费网站| 欧美在线视频导航| 欧美黄色片在线观看| 欧美在线国产精品| 欧美日韩xxxxx| 国产中文字幕91| 欧美国产乱视频| 在线看日韩欧美| 日本不卡高字幕在线2019| 青青草原一区二区| 国产丝袜一区二区三区免费视频| 日韩成人xxxx| 中文字幕亚洲一区在线观看| 欧美激情精品久久久久久久变态| 亚洲精品永久免费精品| 欧美激情综合亚洲一二区| 久久精品久久精品亚洲人| 九色成人免费视频| 成人黄色免费看| 中文字幕久久精品| 国产精品视频一区二区高潮| 亚洲深夜福利视频| 欧美中文字幕在线| 成人性生交大片免费看视频直播| 这里只有精品视频在线| 亚洲欧美日韩精品久久奇米色影视| 欧美一乱一性一交一视频| 性欧美亚洲xxxx乳在线观看| 精品视频中文字幕| 日韩一区二区三区国产| 久久99久久99精品免观看粉嫩| 日本精品久久电影| 91精品国产乱码久久久久久蜜臀| 热久久视久久精品18亚洲精品| 一区二区三区国产在线观看| 日韩中文字幕欧美| 欧美中在线观看| 亚洲视频自拍偷拍| 亚洲欧美中文在线视频| 日韩大陆欧美高清视频区| 久久综合亚洲社区| 欧美日韩国产中文精品字幕自在自线| 97超碰国产精品女人人人爽| 色综合久久中文字幕综合网小说| 人人澡人人澡人人看欧美| 亚洲欧美日韩中文视频| 久久免费视频网| 疯狂蹂躏欧美一区二区精品| 欧美日韩国产成人在线观看| 两个人的视频www国产精品| 亚洲精品成人久久| 亚洲精品久久久久国产| 欧美成年人视频网站欧美| 97视频免费观看| 亚洲精品国产福利| 国产精品丝袜高跟| 欧美激情一级欧美精品| 羞羞色国产精品| 色综合伊人色综合网| 九九热这里只有精品6| 欧美精品video| 国内揄拍国内精品| 日韩一区二区在线视频| 日韩一区二区在线视频| 欧美乱妇40p| 中文字幕自拍vr一区二区三区| 91精品国产乱码久久久久久久久| 欧美视频免费在线| 亚洲人成在线电影| 欧美亚洲国产日韩2020| 亚洲最新av网址| 97色在线观看免费视频| 久久久久久国产精品美女| 亚洲大胆人体av| 国产精品久久久亚洲| 68精品久久久久久欧美| 日韩精品极品视频免费观看| 亚洲风情亚aⅴ在线发布| 欧美日韩不卡合集视频| 亚洲日韩中文字幕在线播放| 亚洲欧美日韩久久久久久| 色悠久久久久综合先锋影音下载| 日韩中文字幕免费视频| 欧美激情一二区| 日韩精品免费在线视频| 成人欧美一区二区三区黑人孕妇| 精品国产福利在线| 久久久中精品2020中文| 精品久久久久久国产91| 欧美一级视频免费在线观看| 亚洲人成网7777777国产| 国产精品扒开腿爽爽爽视频| 日韩免费黄色av| 成人黄色av播放免费| 久久激情五月丁香伊人| 久久精品国产免费观看| 91精品久久久久久久久久久久久久| 亚洲无限乱码一二三四麻| 国产精品视频网址| 亚洲天堂av在线免费| 精品人伦一区二区三区蜜桃网站| 欧美精品久久久久久久免费观看| 亚洲欧美三级在线| 亚洲成人网av| 一区二区成人av| 国产成人一区二区三区小说| 欧美精品在线免费| 亚洲一区二区三区成人在线视频精品| 国产精品一区二区女厕厕| 91亚洲精华国产精华| 国产精品日韩电影| 精品亚洲国产视频| 国外成人性视频| 国产精品精品久久久久久|