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

首頁 > 編程 > C++ > 正文

淺析C++中結構體的定義、初始化和引用

2020-01-26 15:55:09
字體:
來源:轉載
供稿:網友

定義:
結構體(struct)是由一系列具有相同類型或不同類型的數據構成的數據集合,也叫結構。

聲明一個結構體類型的形式是:

復制代碼 代碼如下:

struct Student{      //聲明一個結構體類型Student
 int num;         //聲明一個整形變量num
 char name[20];   //聲明一個字符型數組name
 char sex;        //聲明一個字符型變量sex
 int age;         //聲明一個整形變量age
 float score;     //聲明一個單精度型變量
 char addr[30];   //聲明一個字符型數組addr
}

結構體類型變量的定義方法及初始化

定義結構體變量的方法:
(1)先聲明結構體類型在定義變量名

復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
   Student student1,student2;// 定義結構體類型變量student1和student2
   cout<<sizeof(Student)<<endl;
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}


在定義了結構體變量之后,系統會為之分配內存單元。(可以用sizeof函數查看分配的字節數,不同的編譯系統存在差異)

(2)在聲明類型的同時定義變量

復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   }student1,student2;//聲明變量student1和student2
   cout<<sizeof(Student)<<endl;
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}

(3)直接定義結構體類型變量
復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 struct {      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   }student1,student2;//聲明變量student1和student2
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}


這種定義方法雖然合法,但是不常用。比較常用的是第一種方法。

關于結構體的類型要注意的幾點:
(1)類型與變量是不同的概念,不要混淆。只能對結構體變量中的成員賦值,而不能對結構體類型賦值。

(2)對結構體變量中的成員(即“域”),可以單獨使用,它的作用與地位相當于同類型的普通變量。

(3)結構體的成員也可以是一個結構體變量。

復制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結構體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結構體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
int main(){
   Student qianshou;
   Date     riqi;
   cout<<sizeof(riqi)<<endl;
   cout<<sizeof(qianshou)<<endl; 
   return 0;
}




(5)結構體中的成員名可以與程序中的變量名相同,但二者沒有關系。

例如,程序中可以另定義一個整形變量,他與student中的num是兩回事,互不影響。

2 結構體變量的初始化
(1)在定義結構體時對結構體變量指定初始值

復制代碼 代碼如下:

 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
       } student1={
             10001,
            "qianshou",
             'm',
             19,
             "100",
             "JiNan"
       };

(2)在定義變量時進行初始化(這種方法更常用)
復制代碼 代碼如下:

 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
    Student student1={
<SPAN style="WHITE-SPACE: pre"> </SPAN>       10001,
<SPAN style="WHITE-SPACE: pre"> </SPAN>       "qianshou",
<SPAN style="WHITE-SPACE: pre"> </SPAN>       'm',
<SPAN style="WHITE-SPACE: pre"> </SPAN>       19,
<SPAN style="WHITE-SPACE: pre"> </SPAN>       "100",
<SPAN style="WHITE-SPACE: pre"> </SPAN>       "JiNan"
<SPAN style="WHITE-SPACE: pre"> </SPAN>   };

結構體變量的引用
在定義了結構體變量之后,就可以引用這個變量。

(1)引用結構體變量中的一個成員的值

引用方式:結構體變量名.成員名

其中“.”是成員運算符,它在所有的運算符中優先級最高。

復制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結構體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結構體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
int main(){
   Student one={001,"qianshou",'m',19,10,1,1993,100,"JiNan"};
   cout<<one.num<<endl;
   cout<<one.name<<endl;
   cout<<one.sex<<endl;
   cout<<one.age<<endl;
   cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;
   cout<<one.score<<endl;
   cout<<one.addr<<endl;
   return 0;
}




如果一個成員本社也是一個結構體類型,則要用若干個成員運算符,一級一級地找到最低一級的成員。

例如:

復制代碼 代碼如下:

  cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;

(2)可以將一個結構體變量的值付給另外一個具有形同機構的結構體變量。
復制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結構體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結構體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
int main(){
   Student two={1,"qianshou",'m',19,10,01,1993,100,"JiNan"};
   Student one=two;
   cout<<one.num<<endl;
   cout<<one.name<<endl;
   cout<<one.sex<<endl;
   cout<<one.age<<endl;
   cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;
   cout<<one.score<<endl;
   cout<<one.addr<<endl;
   return 0;
}

(3)可以引用結構體變量的地址,也可以引用結構體變量成員的地址。
復制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結構體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結構體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
int main(){
   Student two={1,"qianshou",'m',19,10,01,1993,100,"JiNan"};
   Student &one=two;
   one.num++;
   one.birthday.day+=10;
   cout<<two.num<<endl;
   cout<<two.name<<endl;
   cout<<two.sex<<endl;
   cout<<two.age<<endl;
   cout<<two.birthday.month<<"/"<<two.birthday.day<<"/"<<two.birthday.year<<endl;
   cout<<two.score<<endl;
   cout<<two.addr<<endl;
   return 0;
}




一個小實例:
復制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結構體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結構體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數組name
  char sex[5];        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結構體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數組addr
   };
int main(){
   Student one;
   //輸入信息
   cout<<"請輸入學號:";
   cin>>one.num;
   cout<<"請輸入姓名:";
   cin>>one.name;
   cout<<"請輸入性別:";
   cin>>one.sex;
   cout<<"請輸入年齡:";
   cin>>one.age;
   cout<<"請輸入生日的年 月 日:";
   cin>>one.birthday.year;
   cin>>one.birthday.month;
   cin>>one.birthday.day;
   cout<<"請輸入你的成績:";
   cin>>one.score;
   cout<<"請輸入地址:";
   cin>>one.addr;
   //輸出信息
   cout<<"/n以下是你的信息/n";
   cout<<"學號:"<<one.num<<endl;
   cout<<"姓名:"<<one.name<<endl;
   cout<<"性別:"<<one.sex<<endl;
   cout<<"年齡:"<<one.age<<endl;
   cout<<"生日:"<<one.birthday.year<<"/"<<one.birthday.month<<"/"<<one.birthday.day<<endl;
   cout<<"成績:"<<one.score<<endl;
   cout<<"地址:"<<one.addr<<endl; 
   return 0;
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合成人婷婷小说| 日韩视频免费中文字幕| 亚洲精品永久免费| 国产精品视频午夜| 国产主播喷水一区二区| 中文字幕亚洲国产| 日韩av在线免费看| 亚洲精品综合久久中文字幕| 亚洲成av人乱码色午夜| 国产精品永久免费观看| 国产精品久久久久久久app| 成人精品视频久久久久| 欧美小视频在线观看| 7m第一福利500精品视频| 夜夜嗨av色综合久久久综合网| 久久综合伊人77777尤物| 国产精品视频久久久久| 亚洲日韩欧美视频| 亚洲影视九九影院在线观看| 亚洲欧美国内爽妇网| 91精品国产自产在线观看永久| 亚洲成人a**站| 欧美激情在线播放| 久久九九精品99国产精品| 6080yy精品一区二区三区| 一区二区三区www| 韩国一区二区电影| 夜夜躁日日躁狠狠久久88av| 亚洲香蕉成人av网站在线观看| 一区二区三区天堂av| 国产欧美欧洲在线观看| 国产大片精品免费永久看nba| 日本亚洲欧洲色α| 欧美在线视频免费观看| 国产欧美一区二区三区久久人妖| 亚洲精品视频免费| 91国产中文字幕| 91免费看片在线| 亚洲国产美女精品久久久久∴| 欧美一级淫片丝袜脚交| 国产精品尤物福利片在线观看| 国产激情综合五月久久| 欧美www视频在线观看| 亚洲精品在线不卡| 欧美日韩国产在线播放| 欧美影院在线播放| 亚洲一区二区国产| 日韩在线视频一区| 日韩精品视频在线观看网址| 伊人久久久久久久久久| 日韩精品免费在线视频观看| 欧美大片va欧美在线播放| 2023亚洲男人天堂| 91av视频在线| 一区国产精品视频| 免费97视频在线精品国自产拍| 色多多国产成人永久免费网站| 欧美黑人狂野猛交老妇| 成人高清视频观看www| 国产一级揄自揄精品视频| 日韩a**站在线观看| 国产女人精品视频| 久久成年人免费电影| 亚洲国产又黄又爽女人高潮的| 在线视频国产日韩| 日韩欧美中文字幕在线播放| 欧美国产日韩xxxxx| 久久精品一区中文字幕| 国产精彩精品视频| 亚洲黄在线观看| 国产一区二区日韩精品欧美精品| 精品成人69xx.xyz| 亚洲精品狠狠操| 亚洲一区二区三区成人在线视频精品| 国a精品视频大全| 久久精品成人一区二区三区| 色在人av网站天堂精品| 午夜精品久久久久久久99黑人| 成人做爰www免费看视频网站| 国产亚洲视频中文字幕视频| 亚洲国产古装精品网站| 国内精品久久久久久久久| 狠狠躁夜夜躁人人爽天天天天97| 日韩在线www| 亚洲欧美日韩天堂一区二区| 1769国内精品视频在线播放| 97超级碰碰人国产在线观看| 亚洲欧美资源在线| 国产视频精品va久久久久久| 国产精品自产拍在线观| 久久久999精品免费| 亚洲www永久成人夜色| 亚洲激情视频在线| 国产成人在线播放| 97在线日本国产| 欧美床上激情在线观看| 欧美精品国产精品日韩精品| 一区二区亚洲精品国产| 人九九综合九九宗合| 欧美小视频在线| 国产日韩中文字幕| 最新国产精品拍自在线播放| 精品国产精品三级精品av网址| 国产欧美日韩中文字幕| 国产精品一区二区三区毛片淫片| 68精品国产免费久久久久久婷婷| 亚洲成人av片| 在线激情影院一区| 久久乐国产精品| 国产伦精品一区二区三区精品视频| 欧美极品少妇全裸体| 国产精品免费小视频| 国产成人精品电影| 国产精品偷伦视频免费观看国产| 夜夜嗨av色综合久久久综合网| 亚洲级视频在线观看免费1级| 精品久久久久久电影| 欧美性生交xxxxxdddd| 亚洲国产天堂久久综合| 精品亚洲国产成av人片传媒| 欧美在线视频一区| 一区国产精品视频| 色综合91久久精品中文字幕| 成人啪啪免费看| 日韩欧美aⅴ综合网站发布| 爱福利视频一区| 91精品中国老女人| 国产婷婷成人久久av免费高清| 国外成人性视频| 粗暴蹂躏中文一区二区三区| 成人疯狂猛交xxx| 国产在线观看精品一区二区三区| 在线视频欧美日韩| 日韩av影院在线观看| 国产精品专区h在线观看| 97国产在线视频| 日本精品久久久| 精品国内产的精品视频在线观看| 国产精品中文在线| 91chinesevideo永久地址| 国语自产精品视频在线看| 久久亚洲国产精品成人av秋霞| 亚洲国产精品va在线| 日韩av在线天堂网| 国产精品免费看久久久香蕉| 欧美在线视频观看免费网站| 麻豆成人在线看| 日韩欧美在线观看视频| 亚洲精品一区二区网址| 亚洲欧美综合精品久久成人| 国产精品久久久久久久久久久新郎| 久久久久久成人精品| 欧美性猛交xxxx久久久| 欧美成人性色生活仑片| 欧美黄色片在线观看| 日韩美女主播视频| 日韩精品高清视频| 三级精品视频久久久久| 国产精品6699| 午夜精品一区二区三区在线视频| 国产精品国产亚洲伊人久久| 中文字幕日韩视频| 国产精品99蜜臀久久不卡二区| 久久久久久网址|