機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
學(xué)C51的基礎(chǔ) 9 《 指針、結(jié)構(gòu)、聯(lián)合和枚舉 》 作者[cmh]©
學(xué)C51的基礎(chǔ) 9 《 指針、結(jié)構(gòu)、聯(lián)合和枚舉 》 作者[cmh]©
 更新時(shí)間:2008-8-17 16:34:10  點(diǎn)擊數(shù):42
【字體: 字體顏色
指針、結(jié)構(gòu)、聯(lián)合和枚舉
    本節(jié)專門對(duì)第二節(jié)曾講述過(guò)的指針作一詳述。并介紹Turbo C新的數(shù)據(jù)類型: 結(jié)構(gòu)、聯(lián)合和枚舉, 其中結(jié)構(gòu)和聯(lián)合是以前講過(guò)的
五種基本數(shù)據(jù)類型(整型、浮點(diǎn)型、字符型、指針型和無(wú)值型)的組合。枚舉是一個(gè)被命名為整型常數(shù)的集合。最后對(duì)類型說(shuō)明
(typedef)和預(yù)處理指令作一闡述。

                                     指       針(point)

    學(xué)習(xí)Turbo C語(yǔ)言, 如果你不能用指針編寫(xiě)有效、正確和靈活的程序, 可以認(rèn)為你沒(méi)有學(xué)好C語(yǔ)言。指針、地址、數(shù)組及其相互
關(guān)系是C語(yǔ)言中最有特色的部分。規(guī)范地使用指針,可以使程序達(dá)到簡(jiǎn)單明了, 因此, 我們不但要學(xué)會(huì)如何正確地使用指針, 而且要
學(xué)會(huì)在各種情況下正確地使用指針變量。

    1. 指針和地址
    1.1 指針基本概念及其指針變量的定義
    1.1.1 指針變量的定義
    我們知道變量在計(jì)算機(jī)內(nèi)是占有一塊存貯區(qū)域的, 變量的值就存放在這塊區(qū)域之中, 在計(jì)算機(jī)內(nèi)部, 通過(guò)訪問(wèn)或修改這塊區(qū)域
的內(nèi)容來(lái)訪問(wèn)或修改相應(yīng)的變量。Turbo C語(yǔ)言中, 對(duì)于變量的訪問(wèn)形式之一, 就是先求出變量的地址, 然后再通過(guò)地址對(duì)它進(jìn)行
訪問(wèn), 這就是這里所要論述的指針及其指針變量。
    所謂變量的指針, 實(shí)際上指變量的地址。變量的地址雖然在形式上好象類似于整數(shù), 但在概念上不同于以前介紹過(guò)的整數(shù), 它
屬于一種新的數(shù)據(jù)類型, 即指針類型。Turbo C中, 一般用"指針"來(lái)指明這樣一個(gè)表達(dá)式&x的類型, 而用 "地址" 作為它的值, 也就
是說(shuō), 若x為一整型變量, 則表達(dá)式&x的類型是指向整數(shù)的指針, 而它的值是變量x的地址。同樣, 若
     double d;

則&d的類型是指向以精度數(shù)d的指針, 而&d的值是雙精度變量d的地址。所以, 指針和地址是用來(lái)敘述一個(gè)對(duì)象的兩個(gè)方面。雖然
&x、&d的值分別是整型變量x 和雙精度變量d的地址,但&x、&d的類型是不同的, 一個(gè)是指向整型變量x的指針, 而另一個(gè)則是指向
雙精度變量d的指針。在習(xí)慣上,  很多情況下指針和地址這兩個(gè)術(shù)語(yǔ)混用了。
    我們可以用下述方法來(lái)定義一個(gè)指針類型的變量。
     int *ip;
首先說(shuō)明了它是一指針類型的變量, 注意在定義中不要漏寫(xiě)符號(hào)"*",否則它為一般的整型變量了。另外, 在定義中的int 表示該指
針變量為指向整型數(shù)的指針類型的變量, 有時(shí)也可稱ip為指向整數(shù)的指針。ip是一個(gè)變量, 它專門存放整型變量的地址。
    指針變量的一般定義為:
       類型標(biāo)識(shí)符  *標(biāo)識(shí)符;
    其中標(biāo)識(shí)符是指針變量的名字, 標(biāo)識(shí)符前加了"*"號(hào), 表示該變量是指針變量, 而最前面的"類型標(biāo)識(shí)符"表示該指針變量所指向
的變量的類型。一個(gè)指針變量只能指向同一種類型的變量, 也就是講, 我們不能定義一個(gè)指針變量, 既能指向一整型變量又能指向
雙精度變量。
    指針變量在定義中允許帶初始化項(xiàng)。如:
        int i, *ip=&i;
注意, 這里是用&i對(duì)ip初始化, 而不是對(duì)*ip初始化。和一般變量一樣, 對(duì)于外部或靜態(tài)指針變量在定義中若不帶初始化項(xiàng), 指針
變量被初始化為NULL, 它的值為0。Turbo C中規(guī)定, 當(dāng)指針值為零時(shí),指針不指向任何有效數(shù)據(jù), 有時(shí)也稱指針為空指針。因此,
當(dāng)調(diào)用一個(gè)要返回指針的函數(shù)(第五節(jié)中介紹)時(shí), 常使用返回值為NULL來(lái)指示函數(shù)調(diào)用中某些錯(cuò)誤情況的發(fā)生。
    1.1.2 指針變量的引用
    既然在指針變量中只能存放地址, 因此, 在使用中不要將一個(gè)整數(shù)賦給一指針變量。下面的賦值是不合法的:
     int *ip;
     ip=100;
假設(shè)
     int i=200, x;
     int *ip;
我們定義了兩個(gè)整型變量i, x, 還定義了一個(gè)指向整型數(shù)的指針變量ip。i, x中可存放整數(shù), 而ip中只能存放整型變量的地址。
我們可以把i的地址賦給ip:
     ip=&i;
此時(shí)指針變量ip指向整型變量i, 假設(shè)變量i的地址為1800, 這個(gè)賦值可形象理解為下圖所示的聯(lián)系。
            ip               i
        ┏━━━┓       ┏━━━┓
        ┃ 1800 ╂──→ ┃ 200  ┃
        ┗━━━┛       ┗━━━┛
  • 上一篇: 學(xué)C51的基礎(chǔ) 10《 聯(lián) 合(union) 》作者[cmh]©
  • 下一篇: 學(xué)C51的基礎(chǔ) 8 《 控制流程語(yǔ)句 》 作者[cmh]©
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1