亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言中的指針運(yùn)算

        2014-04-16 02:35:42龐新法PANGXinfa
        價(jià)值工程 2014年11期
        關(guān)鍵詞:數(shù)組指針指向

        龐新法 PANG Xin-fa

        (陜西省委黨??萍冀萄胁?,西安 710061)

        (Shaanxi Provincial Party School of the CPC,Xi'an 710061,China)

        C語言中的指針運(yùn)算

        龐新法 PANG Xin-fa

        (陜西省委黨校科技教研部,西安 710061)

        (Shaanxi Provincial Party School of the CPC,Xi'an 710061,China)

        指針是C語言的精華、重點(diǎn)、難點(diǎn),也是C系列語言的基礎(chǔ)。本文介紹了C語言中的指針常量和指針變量的運(yùn)算規(guī)則,以及對數(shù)組的訪問。

        指針;地址;數(shù)組;運(yùn)算

        1 緒論

        C語言的精華是指針,程序設(shè)計(jì)的關(guān)鍵也是指針,使用指針的難點(diǎn)是指針的運(yùn)算。用指針訪問數(shù)組元素,相對比較抽象,故本文用簡單的自然語言予以淺析。

        2 指針變量的概念

        2.1 內(nèi)存地址:內(nèi)存中存儲(chǔ)單元的編號(hào) 內(nèi)存中,有眾多的存儲(chǔ)單元(單位:字節(jié))。為了區(qū)分不同單元,必須為每一個(gè)單元編號(hào),這個(gè)編號(hào)就是存儲(chǔ)單元的“地址”,就像電話很多,為了區(qū)分每一部電話,必須為其編號(hào),該編號(hào)就是電話號(hào)碼。每個(gè)單元有且僅有一個(gè)惟一的地址。單元中存放數(shù)據(jù),注意區(qū)分單元的地址與單元中的內(nèi)容(數(shù)據(jù))。

        2.2 變量地址:該變量在內(nèi)存中的起始地址 變量名是單元的外部名字(用戶命名),單元號(hào)是單元的內(nèi)部名字(系統(tǒng)命名)如int x假設(shè)整型變量是2個(gè)字節(jié),系統(tǒng)分配的存儲(chǔ)單元為100和101,則首地址100就是變量x在內(nèi)存中的地址。

        直接訪問——直接利用變量的地址進(jìn)行存取。

        如:把“書”送給“張偉”就是直接訪問。

        間接訪問——通過另一變量訪問該變量的值。

        如:把“書”送給“張偉他哥”就是間接訪問,先間訪“張偉”,知道他哥的地址,再按此地址送“書”。

        2.3 指針變量

        指針:即地址,存放地址的變量稱為指針變量。

        指針變量定義格式:數(shù)據(jù)類型*指針變量[,*指針變量2……];

        取地址運(yùn)算的格式:&變量

        例如

        main()

        {int x,*p;/*整形的指針的p單元

        P=&x;

        X=10;

        *p+=20;

        }程序運(yùn)行結(jié)果是30,30

        3 數(shù)組的指針和指向數(shù)組的指針變量

        3.1 數(shù)組的指針 數(shù)組元素在內(nèi)存中連續(xù)存放,數(shù)組名代表數(shù)組首地址,是一個(gè)地址常量。

        3.2 指向數(shù)組的指針變量的定義

        例如,int a[10],*p=a(或 &a[0]);

        或者:int a[10],*p;p=a;

        3.3 數(shù)組元素的引用

        3.3.1 按名存取 有 int a[10],*p=a;定義,則p=a,一個(gè)數(shù)組,兩個(gè)名字p和a,訪問元素時(shí)用a[i]或p[i]。

        3.3.2 按地址存取 有 int a[10],*p=a;定義,則:p+i和a+i都是數(shù)組元素a[i]的地址,訪問元素時(shí)用*(p+i)和*(a+i)。按地址存?。?(p+i),*(a+i),按名存?。篴[i],p[i]四個(gè)是等價(jià)關(guān)系。

        除國際市場對國內(nèi)市場的利好支撐之外,國內(nèi)的供求利好依然存在。且隨時(shí)間推移,環(huán)保力度持續(xù)加大,行業(yè)開工率低位運(yùn)行的局面很難改變,供求端利好將成為常態(tài)化。

        注意:①p+n指向數(shù)組的下n個(gè)元素,而不是簡單地使指針變量p的值+n。編譯時(shí)為p+n*m。m為一個(gè)元素占用的字節(jié)數(shù)。②指針變量:既然是變量,其值隨時(shí)在變,必須注意其當(dāng)前值,否則容易出錯(cuò)。③指向數(shù)組的指針變量,可以指向數(shù)組以后的任何內(nèi)存單元,C語言不做越界檢查,這些單元不是系統(tǒng)分配的單元,強(qiáng)占資源,易導(dǎo)致死機(jī)。④int a[10],*p=a;p++對,a++錯(cuò),a常量,p 變量。

        3.3.3 指向數(shù)組的指針變量所支持的運(yùn)算 地址加減數(shù)值等于新地址,除此以外運(yùn)算沒有意義,由此得出推論,指針支持的運(yùn)算有:

        算術(shù)運(yùn)算:指針變量±整形數(shù)據(jù)、指針變量-指針變量=整型數(shù)值,該數(shù)值表示兩指針之間的數(shù)據(jù)個(gè)數(shù),并非地址之差。

        關(guān)系運(yùn)算:指針變量 關(guān)系運(yùn)算符 指針變量,表示兩個(gè)變量值的大小關(guān)系,誰在前誰在后。

        4 二維數(shù)組的指針及其指針變量

        4.1 二維數(shù)組的指針 有定義語句:int a[3][4];

        ①從二維數(shù)組角度看,數(shù)組名a代表數(shù)組的起始地址,是一個(gè)以行為單位進(jìn)行控制的行指針,由一維數(shù)組構(gòu)成的一維數(shù)組就是二維數(shù)組,a+i是行指針值,指向二維數(shù)組的第i行。*(a+i)是列指針值,指向第i行第0列。*(*(a+i)):數(shù)組元素a[i][0]的值。用a作指針訪問數(shù)組元素a[i][j]的格式:*(*(a+i)+j)。②int a[3][4],b[4];由定義可看出,a[i]相當(dāng)于數(shù)組名 b,故 a[0]、a[1]、a[2]分別表示第 0、1、2 一維數(shù)組的名字。③賦值:行指針變量=二維數(shù)組名或行指針變量。

        4.2 行指針變量定義格式 數(shù)據(jù)類型(*指針變量)[n];

        4.3 二維數(shù)組元素的訪問 int a[5][4],(*P)[4]=a;和int b[4],可以看出,b相當(dāng)于a[5],第i行的一維數(shù)組名是a[i],元素地址±數(shù)值=元素地址,行地址±數(shù)值=行地址,a+i,a[i],*(a+i)其值相等,但a+i是行地址,a[i],*(a+i)是元素地址。

        ①按名存取:a[i][j]或p[i][j]

        ②按地址存?。?*a[i]+j),*(*(a+i)+j),(*p[i]+j),*(*(p+i)+j)

        5 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)

        靜態(tài)數(shù)組:編譯階段確定數(shù)組的大小,運(yùn)行階段不能改變數(shù)組大小。缺點(diǎn)是事先無法準(zhǔn)確確定數(shù)組的大小,太小不滿足處理需要,太大浪費(fèi)內(nèi)存空間。

        動(dòng)態(tài)數(shù)組:運(yùn)行階段,根據(jù)實(shí)際需要?jiǎng)討B(tài)確定數(shù)組的大小。

        在C語言中,可利用內(nèi)存的申請和釋放庫函數(shù),以及指向數(shù)組的指針變量可當(dāng)數(shù)組名使用的特點(diǎn),來實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。如下程序

        5.1 庫函數(shù)malloc()

        ①用法:void*malloc(unsigned size)。②功能:在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)分配size個(gè)字節(jié)的連續(xù)空間。③返回值:申請成功,則返回新分配內(nèi)存塊的起始地址;否則,返回NULL。

        malloc()函數(shù)的返回值是一個(gè)無類型指針,但在實(shí)際使用malloc()函數(shù)時(shí),必須將其返回值強(qiáng)制轉(zhuǎn)換成被賦值指針變量的數(shù)據(jù)類型,否則出錯(cuò)。

        5.2 運(yùn)算符sizeof

        ①格式:sizeof(變量名/類型名)。②功能:求變量/類型占用的內(nèi)存字節(jié)數(shù)。如sizeof(long)=4。

        5.3 庫函數(shù)free()

        ①用法:void free(void*ptr)。②功能:釋放由ptr指向的內(nèi)存塊(ptr是調(diào)用malloc()函數(shù)的返回值)。③返回值:無。

        一般情況下,使用malloc()函數(shù)申請的內(nèi)存塊,操作結(jié)束后,應(yīng)及時(shí)使用free()函數(shù)予以釋放。特別是在循環(huán)使用malloc()函數(shù)申請時(shí),如果不及時(shí)釋放不再使用的內(nèi)存塊,很可能很快就耗盡系統(tǒng)的內(nèi)存資源,從而導(dǎo)致程序無法繼續(xù)運(yùn)行甚至死機(jī)。

        6 結(jié)束語

        學(xué)習(xí)C語言必須掌握指針的概念,以便為以后C系列語言學(xué)習(xí)打下基礎(chǔ)。

        [1]譚浩強(qiáng).C語言程序設(shè)計(jì)[M].清華大學(xué)出版社,2004.

        [2]丁愛萍.C語言程序設(shè)計(jì)實(shí)例教程[M].西安電子科技大學(xué)出版社,2006.

        [3]林小茶.C語言程序設(shè)計(jì)[M].中國鐵道出版社,2005.

        The Pointer Arithmetic in C Language

        The pointer is the essence,focus and difficult of C language which is also the basis of C language Series.This article describes the arithmetic rules of pointer constants and variables in C language,as well as the access to the address.

        pointer;address;array;operation

        龐新法(1962-),男,陜西禮泉人,副教授,研究方向?yàn)橛?jì)算機(jī)教學(xué)。

        TP312

        A

        1006-4311(2014)11-0214-02

        猜你喜歡
        數(shù)組指針指向
        JAVA稀疏矩陣算法
        科學(xué)備考新指向——不等式選講篇
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        偷指針的人
        把準(zhǔn)方向盤 握緊指向燈 走好創(chuàng)新路
        傳媒評論(2017年8期)2017-11-08 01:47:36
        為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
        尋找勾股數(shù)組的歷程
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        欧美国产综合欧美视频| 日本久久黄色高清视频| 久久精品国产亚洲av麻豆床戏| 人妻体内射精一区二区三区 | 国产亚洲欧美精品久久久| 波多野结衣视频网址| 亚洲av网站首页在线观看| 国产精品狼人久久影院软件介绍| √新版天堂资源在线资源| 亚洲在AV极品无码天堂手机版| 网友自拍人妻一区二区三区三州| 亚洲丰满熟女一区二亚洲亚洲| 宅男66lu国产在线观看| 成人免费ā片在线观看| 国产成人精品蜜芽视频| 99久久久人妻熟妇精品一区二区| 真人做人试看60分钟免费视频| 熟女俱乐部五十路二区av| 国产不卡在线免费视频| 国内精品亚洲成av人片| 国产精品欧美一区二区三区| 精品国产香蕉伊思人在线又爽又黄| 亚洲性码不卡视频在线| 美女脱了内裤露出奶头的视频| 天堂aⅴ无码一区二区三区| 国产精品无码久久久一区蜜臀| 香蕉蜜桃av一区二区三区| 欧美老妇交乱视频在线观看| 国产极品美女高潮抽搐免费网站| 无码国产精品色午夜| 亚洲av成人一区二区| 成人性生交大片免费看96| 国产女人18一级毛片视频 | 日韩成人高清不卡av| 99久久精品免费看国产| 欧美 日韩 国产 成人 在线观看| 欧美激情内射喷水高潮| 中文字幕乱码人妻无码久久久1| 日本亚洲中文字幕一区| 国产性生交xxxxx无码| 一本大道久久精品 东京热|