青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

冰狼

在努力、磨練、打擊下不斷地向著理想的財務自由方向前進

C++復習:C基礎(結構+聯合)

C語言中給出了另一種構造數據類型——“結構”。 它相當于其它高級語言中的記錄。“結構”是一種構造類型,它是由若干“成員”組成的。 每一個成員可以是一個基本數據類型或者又是一個構造類型。 結構既是一種“構造”而成的數據類型, 那么在說明和使用之前必須先定義它,也就是構造它。如同在說明和調用函數之前要先定義函數一樣。

一、結構的定義
定義一個結構的一般形式為:
struct 結構名
{
    成員表列
};
成員表由若干個成員組成, 每個成員都是該結構的一個組成部分。對每個成員也必須作類型說明,其形式為:
類型說明符 成員名;
成員名的命名應符合標識符的書寫規定。
說明結構變量有以下三種方法。以上面定義的stu為例來加以說明。
1. 先定義結構,再說明結構變量。如:
struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
};
struct stu boy1,boy2;
說明了兩個變量boy1和boy2為stu結構類型。也可以用宏定義使一個符號常量來表示一個結構類型,例如:
#define STU struct stu
STU
{
    int num;
    char name[20];
    char sex;
    float score;
};
STU boy1,boy2;

2. 在定義結構類型的同時說明結構變量。例如:
struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
}boy1,boy2;

3. 直接說明結構變量。例如:
struct
{
    int num;
    char name[20];
    char sex;
    float score;
}boy1,boy2;
  第三種方法與第二種方法的區別在于第三種方法中省去了結構名,而直接給出結構變量。三種方法中說明的boy1,boy2變量都具有圖7.1所示的結構。說明了boy1,boy2變量為stu類型后,即可向這兩個變量中的各個成員賦值。在上述stu結構定義中,所有的成員都是基本數據類型或數組類型。成員也可以又是一個結構, 即構成了嵌套的結構。例如,圖7.2給出了另一個數據結構。
在ANSI C中除了允許具有相同類型的結構變量相互賦值以外, 一般對結構變量的使用,包括賦值、輸入、輸出、 運算等都是通過結構變量的成員來實現的。
  表示結構變量成員的一般形式是: 結構變量名.成員名
如果結構變量是全局變量或為靜態變量, 則可對它作初始化賦值。對局部或自動結構變量不能作初始化賦值。
數組的元素也可以是結構類型的。 因此可以構成結構型數組。結構數組的每一個元素都是具有相同結構類型的下標結構變量。

結構指針變量的說明和使用一個指針變量當用來指向一個結構變量時, 稱之為結構指針變量。
結構指針變量中的值是所指向的結構變量的首地址。 通過結構指針即可訪問該結構變量, 這與數組指針和函數指針的情況是相同的。結構指針變量說明的一般形式為:
struct 結構名*結構指針變量名
struct stu *pstu;

當然也可在定義stu結構時同時說明pstu。與前面討論的各類指針變量相同,結構指針變量也必須要先賦值后才能使用。賦值是把結構變量的首地址賦予該指針變量, 不能把結構名賦予該指針變量。如果boy是被說明為stu類型的結構變量,則: pstu=&boy是正確的,而: pstu=&stu是錯誤的。

  結構名和結構變量是兩個不同的概念,不能混淆。 結構名只能表示一個結構形式,編譯系統并不對它分配內存空間。 只有當某變量被說明為這種類型的結構時,才對該變量分配存儲空間。 因此上面&stu這種寫法是錯誤的,不可能去取一個結構名的首地址。 有了結構指針變量,就能更方便地訪問結構變量的各個成員。

其訪問的一般形式為: (*結構指針變量).成員名 或為:
結構指針變量->成員名
例如: (*pstu).num或者: pstu->num
應該注意(*pstu)兩側的括號不可少, 因為成員符“.”的優先級高于“*”。如去掉括號寫作*pstu.num則等效于*(pstu.num),這樣,意義就完全不對了。

結構變量.成員名
(*結構指針變量).成員名
結構指針變量->成員名
  這三種用于表示結構成員的形式是完全等效的。結構數組指針變量結構指針變量可以指向一個結構數組, 這時結構指針變量的值是整個結構數組的首地址。 結構指針變量也可指向結構數組的一個元素,這時結構指針變量的值是該結構數組元素的首地址。設ps為指向結構數組的指針變量,則ps也指向該結構數組的0號元素,ps+1指向1號元素,ps+i則指向i號元素。 這與普通數組的情況是一致的。


C語言中不允許動態數組類型。例如: int n;scanf("%d",&n);int a[n]; 用變量表示長度,想對數組的大小作動態說明, 這是錯誤的。但是在實際的編程中,往往會發生這種情況, 即所需的內存空間取決于實際輸入的數據,而無法預先確定。對于這種問題, 用數組的辦法很難解決。為了解決上述問題,C語言提供了一些內存管理函數,這些內存管理函數可以按需要動態地分配內存空間, 也可把不再使用的空間回收待用,為有效地利用內存資源提供了手段。 常用的內存管理函數有以下三個:
1.分配內存空間函數malloc
調用形式: (類型說明符*) malloc (size) 功能:在內存的動態存儲區中分配一塊長度為"size" 字節的連續區域。函數的返回值為該區域的首地址。 “類型說明符”表示把該區域用于何種數據類型。(類型說明符*)表示把返回值強制轉換為該類型指針。“size”是一個無符號數。例如: pc=(char *) malloc (100); 表示分配100個字節的內存空間,并強制轉換為字符數組類型, 函數的返回值為指向該字符數組的指針, 把該指針賦予指針變量pc。
2.分配內存空間函數 calloc
calloc 也用于分配內存空間。調用形式: (類型說明符*)calloc(n,size) 功能:在內存動態存儲區中分配n塊長度為“size”字節的連續區域。函數的返回值為該區域的首地址。(類型說明符*)用于強制類型轉換。calloc函數與malloc 函數的區別僅在于一次可以分配n塊區域。例如: ps=(struet stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu類型,并把其首地址賦予指針變量ps。
3.釋放內存空間函數free
調用形式: free(void*ptr); 功能:釋放ptr所指向的一塊內存空間,ptr 是一個任意類型的指針變量,它指向被釋放區域的首地址。被釋放區應是由malloc或calloc函數所分配的區域。


“聯合”與“結構”有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的內存空間, 一個結構變量的總長度是各成員長度之和。而在“聯合”中,各成員共享一段內存空間, 一個聯合變量的長度等于各成員中最長的長度。應該說明的是, 這里所謂的共享不是指把多個成員同時裝入一個聯合變量內, 而是指該聯合變量可被賦予任一成員值,但每次只能賦一種值, 賦入新值則沖去舊值。如前面介紹的“單位”變量, 如定義為一個可裝入“班級”或“教研室”的聯合后,就允許賦予整型值(班級)或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時賦予它。聯合類型的定義和聯合變量的說明一個聯合類型必須經過定義之后, 才能把變量說明為該聯合類型。
一、聯合的定義
定義一個聯合類型的一般形式為:
union 聯合名
{
    成員表
};
成員表中含有若干成員,成員的一般形式為: 類型說明符 成員名 成員名的命名應符合標識符的規定。

小結
1. 結構和聯合是兩種構造類型數據,是用戶定義新數據類型的重要手段。結構和聯合有很多的相似之處,它們都由成員組成。成員可以具有不同的數據類型。成員的表示方法相同。都可用三種方式作變量說明。
2. 在結構中,各成員都占有自己的內存空間,它們是同時存在的。一個結構變量的總長度等于所有成員長度之和。在聯合中,所有成員不能同時占用它的內存空間,它們不能同時存在。聯合變量的長度等于最長的成員的長度。
3. “.”是成員運算符,可用它表示成員項,成員還可用“->”運算符來表示。
4. 結構變量可以作為函數參數,函數也可返回指向結構的指針變量。而聯合變量不能作為函數參數,函數也不能返回指向聯合的指針變量。但可以使用指向聯合變量的指針,也可使用聯合數組。
5. 結構定義允許嵌套,結構中也可用聯合作為成員,形成結構和聯合的嵌套。
6. 鏈表是一種重要的數據結構,它便于實現動態的存儲分配。本章介紹是單向鏈表,還可組成雙向鏈表,循環鏈表等。

posted on 2007-06-19 11:29 在法律保護下合法地搶銀行 閱讀(912) 評論(0)  編輯 收藏 引用 所屬分類: C++

公告

轉載、引用、收藏,請標明來自:

http://m.shnenglu.com/paladino

導航

<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

統計

留言簿(2)

隨筆分類(10)

文章分類(5)

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲天堂男人| 久久亚洲国产精品一区二区 | 亚洲日本中文字幕免费在线不卡| 国产日产精品一区二区三区四区的观看方式 | 亚洲欧美日韩国产另类专区| 中文在线资源观看网站视频免费不卡| 日韩午夜电影av| 国产精品99久久久久久www| 亚洲曰本av电影| 久久久夜夜夜| 欧美电影专区| 国产精品成人在线观看| 国产一区二区三区直播精品电影 | 亚洲校园激情| 久久福利精品| 欧美日韩国产成人在线| 国产精品男人爽免费视频1| 欧美一区二区啪啪| 欧美电影专区| 黑人巨大精品欧美一区二区| 亚洲黄色成人久久久| 亚洲女同性videos| 免费成人av| 亚洲一区二区日本| 欧美精品激情| 狠狠色丁香久久婷婷综合丁香| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲综合精品四区| 亚洲国产毛片完整版| 一区二区欧美亚洲| 久久伊伊香蕉| 国产欧美一区二区色老头| 亚洲国产第一| 久久国产精品一区二区三区| 欧美激情一区三区| 久久国产精品黑丝| 国产精品免费在线| 日韩午夜精品| 欧美福利影院| 久久人人看视频| 国产精品捆绑调教| 一区二区三区欧美激情| 欧美不卡高清| 久久久国产精品一区| 国产精品自拍三区| 老司机午夜精品视频在线观看| 日韩亚洲欧美一区| 久久久噜噜噜久久| 国产精品久久波多野结衣| 亚洲精品自在在线观看| 欧美v日韩v国产v| 久久久久久亚洲精品杨幂换脸| 国产精品久久久久久久久久久久| 亚洲精品在线免费| 欧美国产一区二区| 麻豆精品国产91久久久久久| 国内外成人在线| 久久国产精品毛片| 亚洲你懂的在线视频| 国产精品激情av在线播放| 亚洲精品乱码久久久久久日本蜜臀| 久久乐国产精品| 久久9热精品视频| 国产精品日韩欧美一区| 午夜精品久久久久影视| 一本大道久久a久久精二百| 欧美人交a欧美精品| 日韩午夜电影| 亚洲最新在线视频| 国产精品久久久久久久免费软件| 亚洲欧美三级在线| 香蕉久久夜色精品国产使用方法 | 性娇小13――14欧美| 国产精品一区一区三区| 欧美在线|欧美| 午夜国产精品视频| 激情欧美一区二区三区| 亚洲大胆av| 欧美无乱码久久久免费午夜一区 | 国产一区二区三区奇米久涩| 久久字幕精品一区| 欧美电影免费观看网站| 亚洲香蕉网站| 欧美亚洲一级| 亚洲三级免费电影| 亚洲在线一区| 在线观看亚洲精品| 夜夜嗨一区二区三区| 国产女人水真多18毛片18精品视频| 久久精品综合网| 欧美激情中文不卡| 午夜精品久久久久久99热| 校园春色综合网| 亚洲日本欧美在线| 一区二区三区.www| 影音先锋中文字幕一区二区| 亚洲精品久久久久久久久| 欧美午夜不卡影院在线观看完整版免费| 亚洲女优在线| 欧美激情四色| 久久久久一区二区| 欧美性视频网站| 麻豆乱码国产一区二区三区| 另类春色校园亚洲| 一区二区免费在线视频| 精品成人国产| 一区二区日韩| 91久久久一线二线三线品牌| 亚洲午夜精品久久| 日韩午夜在线| 久久久久欧美精品| 亚洲天堂偷拍| 卡一卡二国产精品| 久久国产直播| 国产精品久久久久久久久婷婷| 蜜臀久久99精品久久久画质超高清 | 99精品国产一区二区青青牛奶| 国内精品久久久久影院优| 99精品热6080yy久久| 亚洲国产另类久久久精品极度| 亚洲性视频网址| 日韩午夜电影在线观看| 狼人天天伊人久久| 久久综合九色综合欧美狠狠| 欧美小视频在线观看| 亚洲美女91| av成人免费| 欧美国产亚洲另类动漫| 欧美激情一二三区| 在线看片日韩| 欧美中文字幕| 久久免费99精品久久久久久| 国产女人18毛片水18精品| 一本久道久久综合狠狠爱| 亚洲三级电影全部在线观看高清| 久久婷婷久久一区二区三区| 久久伊人免费视频| 在线观看久久av| 欧美gay视频激情| 欧美成人免费全部观看天天性色| 狠狠色综合播放一区二区| 久久精品在线观看| 欧美高清hd18日本| 亚洲国产一区二区视频| 欧美sm视频| 亚洲精品一区二区在线| 亚洲一区二区黄色| 国产精品自拍小视频| 亚洲欧美另类久久久精品2019| 亚洲一区中文字幕在线观看| 国产精品久久久一本精品| 国产精品99久久99久久久二8| 欧美一区二区成人| 国产在线视频欧美一区二区三区| 久久久国产精品亚洲一区| 你懂的网址国产 欧美| 亚洲精品久久久久久久久久久久久| 免费成人毛片| 一级成人国产| 久久精品视频播放| 亚洲福利视频二区| 欧美韩国日本一区| 亚洲欧美乱综合| 美女视频黄免费的久久| 亚洲精品永久免费精品| 欧美性猛交99久久久久99按摩| 性欧美大战久久久久久久免费观看| 久久人人超碰| 久久久久久久久久久一区| 99精品热视频| 国产精品免费福利| 久久av一区二区三区| 欧美成人日本| 亚洲一区二区av电影| 国模精品一区二区三区| 欧美激情1区2区3区| 亚洲一区二区三区777| 美女视频黄 久久| 亚洲社区在线观看| 好看不卡的中文字幕| 欧美视频在线观看一区| 久久av一区二区三区亚洲| 亚洲国产一区二区a毛片| 久久国产精品99精品国产| 日韩一区二区免费高清| 国内精品久久国产| 国产精品v欧美精品v日韩| 久久国产视频网| 中日韩视频在线观看| 亚洲大黄网站| 久久精品主播| 亚洲欧洲av一区二区| 99re66热这里只有精品3直播| 国模大胆一区二区三区| 国产精品午夜国产小视频| 欧美日韩在线高清| 欧美激情视频一区二区三区在线播放| 久久xxxx精品视频| 亚洲欧美国产毛片在线| 一本一道久久综合狠狠老精东影业|