正在閱讀:新手入門:C/C++中的結(jié)構(gòu)體新手入門:C/C++中的結(jié)構(gòu)體

2005-03-07 15:12 出處:PConline 作者:管寧 責(zé)任編輯:xietaoming

  什么是結(jié)構(gòu)體?

  簡(jiǎn)單的來說,結(jié)構(gòu)體就是一個(gè)可以包含不同數(shù)據(jù)類型的一個(gè)結(jié)構(gòu),它是一種可以自己定義的數(shù)據(jù)類型,它的特點(diǎn)和數(shù)組主要有兩點(diǎn)不同,首先結(jié)構(gòu)體可以在一個(gè)結(jié)構(gòu)中聲明不同的數(shù)據(jù)類型,第二相同結(jié)構(gòu)的結(jié)構(gòu)體變量是可以相互賦值的,而數(shù)組是做不到的,因?yàn)閿?shù)組是單一數(shù)據(jù)類型的數(shù)據(jù)集合,它本身不是數(shù)據(jù)類型(而結(jié)構(gòu)體是),數(shù)組名稱是常量指針,所以不可以做為左值進(jìn)行運(yùn)算,所以數(shù)組之間就不能通過數(shù)組名稱相互復(fù)制了,即使數(shù)據(jù)類型和數(shù)組大小完全相同。

  定義結(jié)構(gòu)體使用struct修飾符,例如:

struct test
{
float a;
int b;
};

  上面的代碼就定義了一個(gè)名為test的結(jié)構(gòu)體,它的數(shù)據(jù)類型就是test,它包含兩個(gè)成員a和b,成員a的數(shù)據(jù)類型為浮點(diǎn)型,成員b的數(shù)據(jù)類型為整型。

  由于結(jié)構(gòu)體本身就是自定義的數(shù)據(jù)類型,定義結(jié)構(gòu)體變量的方法和定義普通變量的方法一樣。

test pn1;

  這樣就定義了一test結(jié)構(gòu)體數(shù)據(jù)類型的結(jié)構(gòu)體變量pn1,結(jié)構(gòu)體成員的訪問通過點(diǎn)操作符進(jìn)行,pn1.a=10 就對(duì)結(jié)構(gòu)體變量pn1的成員a進(jìn)行了賦值操作。

  注意:結(jié)構(gòu)體生命的時(shí)候本身不占用任何內(nèi)存空間,只有當(dāng)你用你定義的結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量的時(shí)候計(jì)算機(jī)才會(huì)分配內(nèi)存。

  結(jié)構(gòu)體,同樣是可以定義指針的,那么結(jié)構(gòu)體指針就叫做結(jié)構(gòu)指針。

  結(jié)構(gòu)指針通過->符號(hào)來訪問成員,下面我們就以上所說的看一個(gè)完整的例子:

#include <iostream>   
#include <string>   
using namespace std; 
 
struct test//定義一個(gè)名為test的結(jié)構(gòu)體 

    int a;//定義結(jié)構(gòu)體成員a 
    int b;//定義結(jié)構(gòu)體成員b 
}; 
 
void main()     

    test pn1;//定義結(jié)構(gòu)體變量pn1 
    test pn2;//定義結(jié)構(gòu)體變量pn2 
 
    pn2.a=10;//通過成員操作符.給結(jié)構(gòu)體變量pn2中的成員a賦值 
    pn2.b=3;//通過成員操作符.給結(jié)構(gòu)體變量pn2中的成員b賦值 
 
    pn1=pn2;//把pn2中所有的成員值復(fù)制給具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量pn1 
    cout<<pn1.a<<"|"<<pn1.b<<endl; 
    cout<<pn2.a<<"|"<<pn2.b<<endl; 
 
    test *point;//定義結(jié)構(gòu)指針 
 
    point=&pn2;//指針指向結(jié)構(gòu)體變量pn2的內(nèi)存地址 
    cout<<pn2.a<<"|"<<pn2.b<<endl; 
    point->a=99;//通過結(jié)構(gòu)指針修改結(jié)構(gòu)體變量pn2成員a的值 
    cout<<pn2.a<<"|"<<pn2.b<<endl; 
    cout<<point->a<<"|"<<point->b<<endl; 
    cin.get(); 
}

  總之,結(jié)構(gòu)體可以描述數(shù)組不能夠清晰描述的結(jié)構(gòu),它具有數(shù)組所不具備的一些功能特性。

鍵盤也能翻頁,試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine