• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C語(yǔ)言中指針的用法

    2010-09-04 08:59:22武漢大學(xué)計(jì)算機(jī)學(xué)院李晶張彥芳
    河南科技 2010年5期
    關(guān)鍵詞:數(shù)組賦值指針

    武漢大學(xué)計(jì)算機(jī)學(xué)院 李晶 張彥芳

    焦作師范高等??茖W(xué)校計(jì)算機(jī)與信息工程系 郭艷麗

    C語(yǔ)言中指針的用法

    武漢大學(xué)計(jì)算機(jī)學(xué)院 李晶 張彥芳

    焦作師范高等??茖W(xué)校計(jì)算機(jī)與信息工程系 郭艷麗

    一、指針的定義

    在C語(yǔ)言中,指針是一種很重要的數(shù)據(jù)類型。程序運(yùn)行時(shí),所有的數(shù)據(jù)都存放在計(jì)算機(jī)的內(nèi)存單元中,為了能夠正確的訪問(wèn)這些內(nèi)存單元,在計(jì)算機(jī)內(nèi)部,所有的內(nèi)存單元都要統(tǒng)一的進(jìn)行“編號(hào)”,也就是說(shuō),所有的內(nèi)存單元都要有地址,并且具有唯一的內(nèi)存地址。一個(gè)變量在內(nèi)存中對(duì)應(yīng)一個(gè)單元地址,通常把這個(gè)地址稱為指針。

    在C語(yǔ)言中,指針定義的一般形式為:類型說(shuō)明符*指針名。

    與其他程序設(shè)計(jì)語(yǔ)言有所不同,C語(yǔ)言允許使用變量的地址來(lái)訪問(wèn)變量,這就意味著C語(yǔ)言中除了有存儲(chǔ)數(shù)、字符等內(nèi)容的普通變量外,還有一種特殊的變量。這種變量存儲(chǔ)的是另一個(gè)變量的地址,而不是通常意義下的數(shù)和字符,這種存儲(chǔ)地址的變量稱為指針變量。例如,當(dāng)變量a存儲(chǔ)了變量b的地址,就稱變量a指向了變量b。

    二、指針的引用

    1.指針的初始化。數(shù)據(jù)類型*指針名=初始地址值。例如:inti,*p=&i。在這需要注意幾個(gè)問(wèn)題,首先指針變量在使用前需要先賦值,其次指針?biāo)傅淖兞恳呀?jīng)說(shuō)明過(guò),而且指針與所指變量類型應(yīng)該一致,最后還需注意不能對(duì)指針賦非地址值。

    2.指針變量的引用。例子如下。

    本程序首先定義指針變量p和q,并在定義的時(shí)候?qū)ψ兞縫初始化,使它指向變量m。賦值語(yǔ)句n=*p*2-3表示將p所指向的存儲(chǔ)單元中的值28乘以2再減去3,再將這一表達(dá)式的值賦給變量n。q=&c1表示指針變量q指向字符變量c1的存儲(chǔ)單元。賦值語(yǔ)句*q=c2+1表示將字符’g’送入q指向的存儲(chǔ)單元中。最后程序運(yùn)行的結(jié)果為:

    在這里需要注意,當(dāng)*p出現(xiàn)在變量定義中的時(shí)候,表示定義了指針變量p;如果出現(xiàn)在表達(dá)式中則表示取p所指對(duì)象的內(nèi)容。

    三、指針與數(shù)組

    在C語(yǔ)言中,指針與數(shù)組有著十分密切的聯(lián)系??梢哉f(shuō)程序中凡是用數(shù)組處理的算法都可以通過(guò)指針實(shí)現(xiàn),而且速度要比下標(biāo)法快得多。

    1.指針與一維數(shù)組。假設(shè)有定義語(yǔ)句:inta[100],*p=a;將數(shù)組a的首地址賦予了指針變量p,這就使指針變量p指向了數(shù)組a的第一個(gè)分量a[0]。由于數(shù)組的存儲(chǔ)結(jié)構(gòu)是連續(xù)的,即數(shù)組元素在內(nèi)存中是連續(xù)存放的,因此a+i就是a[i]的存儲(chǔ)地址&a[i],*(a+i)表示取a+i地址中的內(nèi)容。當(dāng)指針變量p指向數(shù)組的首元素a[0]時(shí),p+i就代表a[i]的地址,*(p+i)就代表a [i]。當(dāng)指針p指向一維數(shù)組中的某個(gè)分量時(shí),執(zhí)行p++或p--就表示使指針p后移或前移一個(gè)存儲(chǔ)單元,其位移的字節(jié)數(shù)取決于基類型。

    2.指針與二維數(shù)組。當(dāng)指向數(shù)組的指針處理二維數(shù)組時(shí),有以下使用規(guī)則:

    p是行指針,p+i、p++或p--均表示指針移動(dòng)的單位是行;p只能指向二維數(shù)組中的行,而不能指向一行中的某個(gè)元素,但是可以通過(guò)p引用二維數(shù)組中的元素,例如引用a[i][j]可以用表達(dá)式*(*(p+i)+j)或*(p[i]+j)來(lái)表示。引用a[i][j]的地址可以用*(p+ i)+j或p[i]+j表示;指針名p與二維數(shù)組名a雖然都代表“行指針”,但指針名p為變量,所以它可以被賦值,而二維數(shù)組名a不能被賦值。

    四、指針與函數(shù)

    在C語(yǔ)言中,指針與函數(shù)之間存在著廣泛的聯(lián)系,其中最基本的聯(lián)系就是指針變量作為函數(shù)的參數(shù)。將函數(shù)的參數(shù)設(shè)置為指針變量可以實(shí)現(xiàn)通過(guò)參數(shù)將函數(shù)值帶出函數(shù)體的目的。

    除此之外,我們還能夠在程序中使用函數(shù)指針。指向函數(shù)的指針,稱為“函數(shù)指針”。借助于該指針能夠使函數(shù)如同普通變量一樣的被傳遞和調(diào)用,用函數(shù)指針作為函數(shù)的參數(shù)能夠提高函數(shù)的通用性。

    五、結(jié)束語(yǔ)

    指針是C語(yǔ)言中最有風(fēng)險(xiǎn)、最難掌握的知識(shí)點(diǎn)。它內(nèi)容豐富、概念復(fù)雜、用法靈活,若使用不當(dāng)或誤用會(huì)造成不良后果,輕則得到錯(cuò)誤的運(yùn)行結(jié)果,重則造成程序掛死乃至系統(tǒng)失控,因此建議使用者必須透徹理解概念,并多上機(jī)調(diào)試程序,從而弄清細(xì)節(jié),積累經(jīng)驗(yàn)。

    猜你喜歡
    數(shù)組賦值指針
    關(guān)于1 1/2 … 1/n的一類初等對(duì)稱函數(shù)的2-adic賦值
    L-代數(shù)上的賦值
    JAVA稀疏矩陣算法
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    偷指針的人
    強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
    為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
    利用賦值法解決抽象函數(shù)相關(guān)問(wèn)題オ
    尋找勾股數(shù)組的歷程
    基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
    榆林市| 浪卡子县| 荥阳市| 罗平县| 封开县| 迁西县| 兴义市| 仪征市| 和顺县| 塔城市| 合肥市| 安平县| 利川市| 花莲县| 黄梅县| 历史| 承德县| 铜陵市| 乐东| 巴彦淖尔市| 天津市| 东源县| 巫溪县| 枣强县| 靖边县| 垫江县| 剑川县| 江西省| 宁远县| 六枝特区| 光山县| 城固县| 牙克石市| 尉氏县| 航空| 金湖县| 固安县| 新蔡县| 扎兰屯市| 哈尔滨市| 闸北区|