結構體 指標
結構宣告:
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;
}