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

冰狼

在努力、磨練、打擊下不斷地向著理想的財務(wù)自由方向前進(jìn)

C++復(fù)習(xí):C基礎(chǔ)(結(jié)構(gòu)+聯(lián)合)

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

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

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

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

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

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

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

其訪問的一般形式為: (*結(jié)構(gòu)指針變量).成員名 或?yàn)椋?br>結(jié)構(gòu)指針變量->成員名
例如: (*pstu).num或者: pstu->num
應(yīng)該注意(*pstu)兩側(cè)的括號不可少, 因?yàn)槌蓡T符“.”的優(yōu)先級高于“*”。如去掉括號寫作*pstu.num則等效于*(pstu.num),這樣,意義就完全不對了。

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


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


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

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

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

公告

轉(zhuǎn)載、引用、收藏,請標(biāo)明來自:

http://m.shnenglu.com/paladino

導(dǎo)航

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

統(tǒng)計

留言簿(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>
            欧美视频一区在线| 亚洲第一狼人社区| 伊人久久久大香线蕉综合直播| 欧美日韩成人免费| 欧美日韩中国免费专区在线看| 欧美日产国产成人免费图片| 欧美精品尤物在线| 欧美日韩岛国| 国产日韩欧美二区| 激情久久久久| 亚洲伦理在线免费看| 亚洲视频1区| 性做久久久久久| 鲁大师成人一区二区三区| 欧美激情一区二区三区不卡| 亚洲免费精彩视频| 欧美一区二区三区在| 欧美a级片网站| 国产精品久久久久久久久久直播 | 午夜视频一区二区| 久热精品视频在线观看| 亚洲精品国精品久久99热| 亚洲欧美欧美一区二区三区| 久久综合色婷婷| 欧美午夜精品久久久久久人妖 | 久久在线免费视频| 日韩一级黄色av| 久久久久久久精| 国产精品入口麻豆原神| 亚洲区在线播放| 久久精品国产99| 一级日韩一区在线观看| 久久午夜色播影院免费高清| 国产精品亚洲综合一区在线观看 | 亚洲日本成人网| 久久免费精品日本久久中文字幕| 99精品视频免费| 蜜臀av性久久久久蜜臀aⅴ| 国产精品尤物福利片在线观看| 国产亚洲成精品久久| 欧美日韩午夜剧场| 伊人久久亚洲美女图片| 午夜在线观看免费一区| 亚洲精品美女91| 亚洲男人av电影| 欧美成人综合网站| 亚洲欧美日韩国产成人精品影院| 欧美精品激情在线| 亚洲激情黄色| 欧美a级片网| 久久久久久久综合| 韩国一区二区三区美女美女秀| 亚洲伊人一本大道中文字幕| 最新中文字幕亚洲| 免费在线欧美视频| 最新亚洲激情| 欧美大片va欧美在线播放| 久久精品中文字幕免费mv| 国产视频久久| 久久久午夜视频| 久久九九精品99国产精品| 国产性天天综合网| 久久久久久久久久看片| 久久爱www久久做| 黄色国产精品| 嫩草影视亚洲| 欧美成人综合一区| 亚洲狼人综合| 一本色道久久综合亚洲精品按摩 | 国产在线不卡精品| 久久经典综合| 久久久久九九九| 亚洲电影欧美电影有声小说| 欧美成人一区在线| 欧美精品日韩一区| 中文国产成人精品| 亚洲自拍电影| 在线看片欧美| 亚洲日韩欧美一区二区在线| 欧美日韩在线三级| 欧美一区二区免费| 久久久久.com| 日韩亚洲一区在线播放| 在线亚洲免费| 国内精品伊人久久久久av影院| 欧美aⅴ99久久黑人专区| 欧美劲爆第一页| 午夜在线成人av| 久久露脸国产精品| av成人免费观看| 香蕉久久一区二区不卡无毒影院| 在线观看日韩av先锋影音电影院| 亚洲第一免费播放区| 国产精品国产三级国产普通话三级| 久久精品观看| 欧美精品七区| 亚洲每日在线| 国产精品日本一区二区| 先锋影音国产一区| 久久精品国产亚洲一区二区| 久久女同互慰一区二区三区| 亚洲精品中文字幕女同| 中文一区字幕| 亚洲第一福利在线观看| 亚洲一区二区在线看| 亚洲激精日韩激精欧美精品| 午夜久久福利| 亚洲亚洲精品三区日韩精品在线视频| 欧美一级黄色录像| 亚洲性视频网站| 欧美成人一品| 久久人人97超碰精品888| 欧美午夜宅男影院| 亚洲国产精品专区久久| 极品日韩av| 亚洲在线网站| 亚洲一区二区黄| 麻豆精品在线观看| 久久综合九色综合欧美就去吻 | 欧美一区二区三区另类| 亚洲视频在线二区| 欧美国产综合一区二区| 免费短视频成人日韩| 国产在线播放一区二区三区| 亚洲午夜精品在线| 亚洲视频在线免费观看| 欧美高清在线播放| 亚洲电影观看| 亚洲高清免费视频| 久久亚洲一区| 欧美 日韩 国产在线| 在线观看91久久久久久| 久久久久国产一区二区三区四区 | 亚洲一区999| 中文国产成人精品久久一| 欧美日本一区| 亚洲精品视频在线播放| 日韩视频一区二区三区| 欧美福利影院| 亚洲精品免费观看| 亚洲网站视频| 欧美午夜性色大片在线观看| 一卡二卡3卡四卡高清精品视频| 一区二区三区视频在线| 欧美天堂亚洲电影院在线观看 | 国产乱码精品| 欧美制服丝袜第一页| 久久免费的精品国产v∧| 激情综合中文娱乐网| 免费成人黄色| 午夜精品久久久久久久99水蜜桃| 99精品欧美一区二区蜜桃免费| 欧美日韩中文另类| 亚洲欧美色婷婷| 亚洲美女在线视频| 亚洲第一精品夜夜躁人人爽| 国产欧美三级| 国产精品网站一区| 欧美性猛片xxxx免费看久爱| 久久国产精品亚洲va麻豆| 亚洲精品视频在线看| 亚洲国产精品久久久久久女王| 欧美中文在线观看国产| 一本色道久久综合狠狠躁的推荐| 欧美激情黄色片| 欧美成人69av| 亚洲国内精品| 亚洲美女视频在线免费观看| 欧美日韩极品在线观看一区| 亚洲无吗在线| 欧美在线免费观看| 伊人久久大香线蕉综合热线 | 亚洲欧洲一区二区天堂久久 | 欧美18av| 欧美日韩亚洲免费| 韩曰欧美视频免费观看| 久久综合久色欧美综合狠狠| 欧美国产欧美综合 | 欧美一区免费视频| 99精品99| 久久久久久日产精品| 日韩亚洲欧美综合| 美国成人直播| 欧美在线视频一区二区| 欧美激情一区二区三区成人| 午夜精品久久久久久久久久久久久 | 欧美大胆成人| 欧美怡红院视频| 亚洲视频www| 欧美黄色一级视频| 欧美国产日产韩国视频| 国产资源精品在线观看| 亚洲一级黄色片| 亚洲永久在线观看| 欧美全黄视频| 日韩性生活视频| 午夜精品福利一区二区蜜股av| 欧美人成在线视频| 9久re热视频在线精品| 99国产精品久久久久久久久久|