1. 程式人生 > >結構體 指標

結構體 指標

結構宣告:

1、可以生命在main()函式中,緊跟在括號的後面,內部宣告只能被該宣告所屬的函式使用;

2、也可以將宣告放到main()的前面,外部宣告可被其後面的任何函式使用。

 

 

使用賦值運算子(=)將結構賦值給另一同型別的結構

 

#include <iostream>

 

struct inflatable

{

         charname[20];

         floatvolume;

         doubleprice;

};

 

int main()

{

         usingnamespace std;

         inflatablebouquet=

         {

                   "sunflowers",

                   0.20,

                   12.49

         };

         inflatablechoice;

         cout<<"bouquet:"<<bouquet.name<<" for$"<<bouquet.price<<endl;

 

         choice=bouquet;

         cout<<"choice:"<<choice.name<<" for$"<<choice.price<<endl;

         return0;

}

 

 

 

 

結構陣列:

 

#include <iostream>

 

struct inflatable

{

         charname[20];

         floatvolume;

         doubleprice;

};

 

int main()

{

         usingnamespace std;

         inflatableguests[2]=

         {

                   {"bambi",0.5,21.99},

                   {"Bodzilla",2000,565.99}

         };

         cout<<"Theguests "<<guests[0].name<<" and"<<guests[1].name

                   <<"\nhavea combined volume of "

                   <<guests[0].volume+guests[1].volume<<"cubic feet.\n";

         return0;

}

 

初始化結構陣列的規則,可以結合初始化陣列的規則(用逗號分隔每個元素的值,並將這些值用花括號括起)和初始化結構的規則(用逗號分割每個成員的值,並將這些值用花括號括起)。

inflatable guests[2]=

{

         {"bambi",0.5,21.99},

         {"Bodzilla",2000,565.99}

};

 

共用體:

它能夠儲存不同的資料型別,但只能同時儲存其中的一種型別。也就是說結構可以同時儲存int、long和double,共用體只能儲存int、long或double。

可節省空間。

 

 

指標

是一個變數,儲存的是值的地址,而不是值本身

如home是一個變數,則&home是它的地址

 

#include <iostream>

 

int main()

{

         usingnamespace std;

         intdonuts=6;

         doublecups=4.5;

 

         cout<<"donutsvalue="<<donuts;

         cout<<"and donuts address="<<&donuts<<endl;

 

         cout<<"cupsvalue="<<cups;

         cout<<"and cups address="<<&cups<<endl;

         return0;

}

 

輸出地址和地址處的值:

#include <iostream>

 

int main()

{

         usingnamespace std;

         intupdates=6;

         int*p_updates;

         p_updates=&updates;

 

         cout<<"Values:updates="<<updates;

         cout<<", *p_updates="<<*p_updates<<endl;

 

         cout<<"Address:&updates="<<&updates;

         cout<<", p_updates="<<p_updates<<endl;

 

         *p_updates=*p_updates+1;

         cout<<"Nowupdates="<<updates<<endl;

         return0;

}

 

為一個數據物件(可以是結構,也可以是基本型別)獲得並指定分配記憶體的通用格式如下:

typeName * point_name = new typeName;

 

new來分配記憶體

#include <iostream>

 

int main()

{

         usingnamespace std;

         intnights=1001;

         int* pt=new int;

         *pt=1001;

 

         cout<<"nighysvalue="<<nights<<":location"<<&nights<<endl;

         cout<<"int";

         cout<<"value="<<*pt<<":location="<<pt<<endl;

         double*pd=new double;

         *pd=10000001.0;

 

         cout<<"double";

         cout<<"value="<<*pd<<":location"<<pd<<endl;

         cout<<"locationof pointer pd: "<<&pd<<endl;

         cout<<"Sizeof pt="<<sizeof(pt);

         cout<<":Size of *pt="<<sizeof(*pt)<<endl;

         cout<<"Sizeof pd="<<sizeof(pd);

         cout<<":Size of *pd="<<sizeof(*pd)<<endl;

         return0;

}