欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

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

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

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

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

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

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

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

#include<iostream>
using namespace std;
int main(){
 struct Student{      //聲明一個(gè)結(jié)構(gòu)體類型Student
  int num;         //聲明一個(gè)整形變量num
  char name[20];   //聲明一個(gè)字符型數(shù)組name
  char sex;        //聲明一個(gè)字符型變量sex
  int age;         //聲明一個(gè)整形變量age
  float score;     //聲明一個(gè)單精度型變量
     char addr[30];   //聲明一個(gè)字符型數(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)會(huì)為之分配內(nèi)存單元。(可以用sizeof函數(shù)查看分配的字節(jié)數(shù),不同的編譯系統(tǒng)存在差異)

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

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

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


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

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

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

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

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

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




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

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

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

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

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

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

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

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

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

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

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

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

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




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

例如:

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

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

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

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




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

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


上一篇:C++泛型算法的一些總結(jié)

欄    目:C語(yǔ)言

下一篇:淺析C++中的虛函數(shù)

本文標(biāo)題:淺析C++中結(jié)構(gòu)體的定義、初始化和引用

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/4212.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有