欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析C++中結(jié)構(gòu)體的定義、初始化和引用

 更新時(shí)間:2013年09月02日 09:21:44   作者:  
以下是對C++中結(jié)構(gòu)體的定義、初始化和引用進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下

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

聲明一個結(jié)構(gòu)體類型的形式是:

復(fù)制代碼 代碼如下:

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

結(jié)構(gòu)體類型變量的定義方法及初始化

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

復(fù)制代碼 代碼如下:

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


在定義了結(jié)構(gòu)體變量之后,系統(tǒng)會為之分配內(nèi)存單元。(可以用sizeof函數(shù)查看分配的字節(jié)數(shù),不同的編譯系統(tǒng)存在差異)

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

復(fù)制代碼 代碼如下:

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

(3)直接定義結(jié)構(gòu)體類型變量
復(fù)制代碼 代碼如下:

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


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

關(guān)于結(jié)構(gòu)體的類型要注意的幾點(diǎn):
(1)類型與變量是不同的概念,不要混淆。只能對結(jié)構(gòu)體變量中的成員賦值,而不能對結(jié)構(gòu)體類型賦值。

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

(3)結(jié)構(gòu)體的成員也可以是一個結(jié)構(gòu)體變量。

復(fù)制代碼 代碼如下:

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




(5)結(jié)構(gòu)體中的成員名可以與程序中的變量名相同,但二者沒有關(guān)系。

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

2 結(jié)構(gòu)體變量的初始化
(1)在定義結(jié)構(gòu)體時(shí)對結(jié)構(gòu)體變量指定初始值

復(fù)制代碼 代碼如下:

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

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

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

結(jié)構(gòu)體變量的引用
在定義了結(jié)構(gòu)體變量之后,就可以引用這個變量。

(1)引用結(jié)構(gòu)體變量中的一個成員的值

引用方式:結(jié)構(gòu)體變量名.成員名

其中“.”是成員運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級最高。

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結(jié)構(gòu)體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結(jié)構(gòu)體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數(shù)組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結(jié)構(gòu)體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數(shù)組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;
}




如果一個成員本社也是一個結(jié)構(gòu)體類型,則要用若干個成員運(yùn)算符,一級一級地找到最低一級的成員。

例如:

復(fù)制代碼 代碼如下:

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

(2)可以將一個結(jié)構(gòu)體變量的值付給另外一個具有形同機(jī)構(gòu)的結(jié)構(gòu)體變量。
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結(jié)構(gòu)體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結(jié)構(gòu)體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數(shù)組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結(jié)構(gòu)體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數(shù)組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)可以引用結(jié)構(gòu)體變量的地址,也可以引用結(jié)構(gòu)體變量成員的地址。
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結(jié)構(gòu)體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結(jié)構(gòu)體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數(shù)組name
  char sex;        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結(jié)構(gòu)體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數(shù)組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;
}




一個小實(shí)例:
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
 struct Date{        //聲明一個結(jié)構(gòu)體類型Date
  int month;      //日期中的月份
  int day;        //日期中的天
  int year;       //日期中的年份
 };
 struct Student{      //聲明一個結(jié)構(gòu)體類型Student
  int num;         //聲明一個整形變量num
  char name[20];   //聲明一個字符型數(shù)組name
  char sex[5];        //聲明一個字符型變量sex
  int age;         //聲明一個整形變量age
  Date birthday;   //Date是結(jié)構(gòu)體類型,birthday是Date的類型的變量
  float score;     //聲明一個單精度型變量
     char addr[30];   //聲明一個字符型數(shù)組addr
   };
int main(){
   Student one;
   //輸入信息
   cout<<"請輸入學(xué)號:";
   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<<"學(xué)號:"<<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;
}


相關(guān)文章

  • C++示例講解觀察者設(shè)計(jì)模式

    C++示例講解觀察者設(shè)計(jì)模式

    觀察者模式是極其重要的一個設(shè)計(jì)模式,也是我?guī)啄觊_發(fā)過程中使用最多的設(shè)計(jì)模式,本文首先概述觀察者模式的基本概念和Demo實(shí)現(xiàn),接著是觀察者模式在C++中的應(yīng)用,最后是對觀察者模式的應(yīng)用場景和優(yōu)缺點(diǎn)進(jìn)行總結(jié)
    2022-12-12
  • C++基于socket多線程實(shí)現(xiàn)網(wǎng)絡(luò)聊天室

    C++基于socket多線程實(shí)現(xiàn)網(wǎng)絡(luò)聊天室

    這篇文章主要為大家詳細(xì)介紹了C++基于socket多線程實(shí)現(xiàn)網(wǎng)絡(luò)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言程序設(shè)計(jì)之指針的應(yīng)用詳解

    C語言程序設(shè)計(jì)之指針的應(yīng)用詳解

    為了讓大家能夠更準(zhǔn)確的了解C語言中指針的使用,本文為大家準(zhǔn)備了四個指針相關(guān)的例題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11
  • C++?Boost?ProgramOptions超詳細(xì)講解

    C++?Boost?ProgramOptions超詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • Qt繪制圖表的實(shí)現(xiàn)

    Qt繪制圖表的實(shí)現(xiàn)

    Qt中提供了強(qiáng)大的2D繪圖系統(tǒng),可以使用同一API實(shí)現(xiàn)在屏幕和繪圖設(shè)備上進(jìn)行繪制,本文就詳細(xì)的介紹了Qt繪制坐標(biāo)圖、柱狀圖、折線圖、餅圖、曲線圖、散點(diǎn)圖等,感興趣的可以了解一下
    2021-05-05
  • C++實(shí)現(xiàn)LeetCode(158.用Read4來讀取N個字符之二 - 多次調(diào)用)

    C++實(shí)現(xiàn)LeetCode(158.用Read4來讀取N個字符之二 - 多次調(diào)用)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(158.用Read4來讀取N個字符之二 - 多次調(diào)用),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言圣誕樹的實(shí)現(xiàn)示例

    C語言圣誕樹的實(shí)現(xiàn)示例

    本篇主要介紹了C語言圣誕樹的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 關(guān)于C語言中弱符號與弱引用的實(shí)際應(yīng)用問題

    關(guān)于C語言中弱符號與弱引用的實(shí)際應(yīng)用問題

    在編碼過程中,我們經(jīng)常遇到符號重定義的錯誤問題,本文通過實(shí)例代碼展示給大家介紹了C語言弱符號與弱引用的實(shí)際應(yīng)用問題,一起看看吧
    2021-09-09
  • C++使用string的大數(shù)快速模冪運(yùn)算(6)

    C++使用string的大數(shù)快速模冪運(yùn)算(6)

    這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)快速模冪運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C/C++實(shí)現(xiàn)手寫數(shù)字識別的示例詳解

    C/C++實(shí)現(xiàn)手寫數(shù)字識別的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用C/C++實(shí)現(xiàn)手寫數(shù)字識別,分別處理 32*32 文本數(shù)據(jù)集和mnist 28*28 png數(shù)據(jù)集,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-10-10

最新評論