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

posts - 19,  comments - 21,  trackbacks - 0

初學(xué)者往往知道數(shù)組和指針之間有聯(lián)系,但是具體的聯(lián)系和限制卻又搞不清楚,想當(dāng)年我也如此,這里就將這方面的知識做個總結(jié)吧。

1.定義

定義數(shù)組時必須指定數(shù)組的類型和大小,
定義指針時只需要指定類型。

2.存儲空間的分配


對于數(shù)組,因?yàn)橄到y(tǒng)會按照你指定的大小為數(shù)組分配存儲空間,這也是為什么數(shù)組必須指定大小的原因,如:char array[5] ; //系統(tǒng)會自動為其預(yù)留sizeof(char)*5個字節(jié)的連續(xù)內(nèi)存(注意是連續(xù)的)。所以我們可以對array[0]...array[4]這五個變量隨便訪問(讀和寫)都不會有問題。
對于指針,系統(tǒng)只會為所定義的指針變量分配空間,指針?biāo)赶虻牡攸c(diǎn)并未分配。舉個例子: char *p ; 這里會為變量p分配空間,大小為4字節(jié)(32位機(jī)),但是*p(就是p指向的地方)卻是隨機(jī)的地方,這個地方系統(tǒng)也不為其分配空間。所以在這種情況下,你訪問和給p賦值(p=...)都是允許的,但是訪問*p或者給*p賦值都是錯誤的。我們要想使用*p必須先使其指向有效區(qū)域,這可以通過動態(tài)申請內(nèi)存或者賦值(將知道的有效地點(diǎn)賦給它)來實(shí)現(xiàn)。
提醒一下:對于指針,在使用時,不光所指向的區(qū)域能讀寫,指針變量本身也能讀寫,但是數(shù)組不同,數(shù)組名的不能寫的(允許讀)。為什么?因?yàn)橹羔樧兞縫有存儲空間,而數(shù)組名array是沒有的。

3.多級指針


一級指針,char *p ; //p為指向char類型的指針變量。

有了指針變量我們就可以定義任何類型的指針,可以隨心所欲的用指針來訪問任何類型的變量。但是有人發(fā)現(xiàn)了問題,使用這種定義,我們無法用指針來操縱指針類型,于是二級指針的定義被拿出來了。

二級指針就是指向指針的指針,用來操縱一指針變量。
例:char **pp ;
定義的pp為指向一個 指向一char變量的指針 的指針。
我們可以將 pp指向到前面定義的p : pp = &p ;
現(xiàn)在很容易看清他們之間個關(guān)系:
*pp就是訪問pp指向的位置,訪問的值當(dāng)然就是p,
**pp就是*(*pp)拉,當(dāng)然等于*p.

注意 定義pp的時候,系統(tǒng)只為pp分配了空間,并未為*pp分配空間,后來能訪問*pp是因?yàn)槲覀兪褂胮p=&p將pp指向了&p這個已經(jīng)分配好了的空間。

同理,為了控制二級指針于是有了三級指針,...

4.多維數(shù)組

char array[5];//定義了array為含有5個char元素的數(shù)組。
二維數(shù)組的定義我就不多說了,相信大家知道得已經(jīng)很詳細(xì)了。我這里就說一說他們的名稱吧。提醒一下:他提出的愿意是我們希望得到array類型的數(shù)組。
char arrayMulti[3][5] ;
前面說過數(shù)組名不是變量,那么它是怎么使用的呢?
其實(shí)數(shù)組名只是在編譯時刻編譯器用來定位變量位置的一個標(biāo)簽。比如 array[3],那么編譯器就認(rèn)為是“標(biāo)簽+3”,你如果寫 array[6],那么編譯器就認(rèn)為是“標(biāo)簽+6”,這就是C不會給出數(shù)組越界錯誤的原因。那么arrayMulti是什么呢?細(xì)讀二維數(shù)組的定義:我們定義的是一個數(shù)組的數(shù)組。我們寫了這個定義,就意味著我們已經(jīng)有了 char [5] 這種類型的數(shù)組,而現(xiàn)在我們要定義一個現(xiàn)有數(shù)組類型的數(shù)組arrayMulti 。并且在以后的程序中他會永遠(yuǎn)記得它的元素的類型是char [5],所以你在訪問他的元素arrayMulti[1]時,他知道這是一個char[5]的數(shù)組。同樣二維數(shù)組也不檢查越界,所以你寫arrayMulti[2][5]不會有問題。
提示:編譯器不檢查數(shù)組的越界,但會檢查數(shù)組元素的類型,所以:
對于array ,你給array[0]一個int型的值是不行的,因?yàn)樗脑厥莄har類型;
對于arrayMulti,你他的元素一個char[6]的值也是不行的(詳細(xì)例子見“蛻化”)。

5.數(shù)組名的蛻化


數(shù)組在作為函數(shù)參數(shù)時,數(shù)組名將蛻化為指針。C語言的書上是這么說的,我這里要說得是:這句話是不完全正確的!我們知道指針是占用內(nèi)存的,但是這個蛻化而成的家伙是不占有內(nèi)存的,仍然只是個標(biāo)簽。書上為什么這么說呢?書上的意思是說這家伙已經(jīng)蛻化得不知道自己有幾個元素了。舉個例子:
void fun(char array[5]);
在編譯時編譯器會當(dāng)成是:void fun(char *array);你在這個函數(shù)中使用sizeof(a)得到的值是4,而在定義char array[5]的函數(shù)中sizeof(array) = 5,說明確實(shí)已經(jīng)蛻化為指針了。所以你寫:
char *pa = array ; //正確,指針到指針

數(shù)組名退化為指針,在這里強(qiáng)調(diào)一下:數(shù)組的元素類型仍然存在!這里要注意的是多維數(shù)組的情況。
以2維數(shù)組為例:
void fun2(char arrayMulti[3][5]);
那么在函數(shù)fun2中,arrayMulti蛻化成的是char (*)[5],即:指向char[5]類型的指針,因?yàn)榍懊娣治鲞^arrayMulti的元素的類型是char[5],所以在程序中:
char **pm = arrayMulti ; //錯誤:從char (*)[5]到 char **的賦值
char (*pm5)[5] ;
pm5 = arrayMulti ; //正確。

6.對元素的訪問
數(shù)組名是一個標(biāo)簽,是一個記錄地址的標(biāo)簽,在對元素的訪問上所起的作用和指針一樣,所以:
int a[5];
int *b;
b=a;
那么:
a[1],b[1],*(a+1),*(b+1)都是允許的。
更懸一點(diǎn):因?yàn)槠湓谶@兒所起的作用僅僅是個標(biāo)簽而已(編譯的時候就是讓兩者相加),所以:
1[a],1[b],也是允許的。

7.取地址
對指針變量使用&運(yùn)算后得到的是指針變量的地址,那么數(shù)組名呢?
他僅僅是個標(biāo)簽啊,根本就沒地方存放。
所以C語言中的規(guī)定是取數(shù)組地址的結(jié)果是:仍然是其本身。
既 &array 的值和 array一樣。
注意:值是一樣,類型是不一樣的。

------------------------

雖然數(shù)組名的確沒有存儲空間,但把&a規(guī)定為跟a的地址值一樣并不是這個原因。
數(shù)組名是一個右值,本來不符合&的語法的,但是,數(shù)組卻是一個對象,對一個
數(shù)組對象取地址是合理的,C標(biāo)準(zhǔn)委員會經(jīng)過衡量,認(rèn)為維護(hù)一個對象的完整性
更重要,因此允許&a,只不過,&a的意義,并非對一個數(shù)組名取地址,而是對
一個數(shù)組對象取地址。

posted on 2005-12-18 21:08 halCode 閱讀(957) 評論(0)  編輯 收藏 引用 所屬分類: 算法/數(shù)據(jù)結(jié)構(gòu)

<2025年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(7)

隨筆分類

隨筆檔案

文章分類

文章檔案

相冊

編程資源

不務(wù)正業(yè)

找工作

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 欧美激情麻豆| 久久一区二区三区四区五区| 亚洲香蕉在线观看| 一区二区三区|亚洲午夜| 亚洲美女网站| 亚洲国产精品国自产拍av秋霞| 欧美一区二区三区喷汁尤物| 日韩亚洲欧美成人| 日韩视频精品| 一区二区三区视频免费在线观看 | 国产一区二区三区的电影| 国产农村妇女毛片精品久久莱园子 | 亚洲色诱最新| 亚洲嫩草精品久久| 亚洲网站在线播放| 亚洲欧美综合网| 亚洲日韩欧美视频一区| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美一区二区精品久久久| 亚洲午夜精品一区二区三区他趣| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲成人在线观看视频| 亚洲国产精品久久精品怡红院 | 欧美一区午夜视频在线观看| 欧美在线网站| 亚洲免费在线视频| 国内久久精品| 国语自产精品视频在线看| 欧美成人午夜影院| 欧美fxxxxxx另类| 久久国产一区二区三区| 亚洲天堂久久| 亚洲欧美国产制服动漫| 亚洲欧美另类国产| 奶水喷射视频一区| 亚洲综合久久久久| 欧美激情一区二区三区蜜桃视频| 欧美成人精品激情在线观看| 99国内精品久久久久久久软件| 久久精视频免费在线久久完整在线看| 欧美精品在线极品| 宅男在线国产精品| 亚洲一区二区三区高清不卡| 欧美激情精品久久久六区热门| 亚洲欧洲精品一区二区三区不卡| 亚洲视频一二三| 久久精品99无色码中文字幕| 国产日本欧美一区二区| 欧美在线观看视频| 欧美一区二区三区视频免费播放| 欧美国产综合视频| 亚洲激情自拍| 一区二区欧美日韩| 在线播放日韩欧美| 99精品欧美| 午夜一区二区三视频在线观看| 欧美成人精品h版在线观看| 亚洲国产精品成人一区二区| aa级大片欧美| 亚洲成人在线视频播放| 99v久久综合狠狠综合久久| 国产一区二区三区最好精华液| 亚洲第一区在线观看| 国产情侣一区| 亚洲精品一区在线观看| 欧美承认网站| 欧美另类专区| 亚洲人成在线观看| 一区二区三区.www| 欧美成人xxx| 亚洲国产91| 亚洲国产高清一区二区三区| 亚洲午夜久久久| 亚洲在线免费| 欧美午夜精品久久久| 日韩午夜在线电影| 欧美先锋影音| 欧美不卡视频一区发布| 欧美一区二区高清| 亚洲自拍都市欧美小说| 亚洲精品裸体| 亚洲精品欧美极品| 亚洲电影免费观看高清完整版| 欧美在线一二三四区| 国产亚洲电影| 欧美日韩免费| 亚洲电影免费观看高清完整版在线观看| 国语自产精品视频在线看抢先版结局 | 免费成人激情视频| 91久久久久久| 久久视频一区| 久久精品理论片| 99精品国产在热久久婷婷| 国产日韩欧美一二三区| 欧美日韩免费视频| 蜜桃视频一区| 久久影院午夜片一区| 欧美一级久久久| 午夜精品福利视频| 亚洲一区日韩在线| 99在线|亚洲一区二区| 中文在线资源观看网站视频免费不卡| 亚洲欧美成人| 久久综合色影院| 亚洲国产成人精品久久| 亚洲人成在线观看网站高清| 中文国产亚洲喷潮| 久久国产一区| 亚洲一区久久| 欧美第十八页| 亚洲女与黑人做爰| 欧美电影专区| 国产亚洲永久域名| 亚洲天堂成人在线视频| 久久综合免费视频影院| 久久人人97超碰国产公开结果| 有码中文亚洲精品| 欧美在线播放一区| 99这里只有精品| 免费观看日韩| 99视频有精品| 欧美一级淫片aaaaaaa视频| 久久久www免费人成黑人精品 | 国产亚洲精品综合一区91| 一本久久青青| 欧美日韩亚洲网| 久久激五月天综合精品| 亚洲视频一二区| 99国产精品视频免费观看| 久久久久久精| 亚洲一区在线观看免费观看电影高清| 国产乱肥老妇国产一区二| 久久精品国产视频| 欧美一区二区三区在线免费观看 | 欧美成人午夜激情在线| 亚洲精品久久7777| 狠狠色狠色综合曰曰| 欧美日韩91| 国产精品久久一区主播| 欧美三区在线视频| 欧美日韩中文在线| 欧美日韩不卡视频| 欧美高潮视频| 国产精品久久久久久久午夜片| 欧美日韩精品免费看| 亚洲美女色禁图| 中文国产成人精品久久一| 欧美日韩一区二区高清| 午夜视频一区在线观看| 欧美在线一二三| 免费观看成人网| 欧美1区2区| 精品动漫3d一区二区三区| 亚洲一区二区少妇| 欧美大片国产精品| 免费看成人av| 亚洲精品综合久久中文字幕| 日韩亚洲欧美一区二区三区| 一区二区三区久久网| 欧美性猛交xxxx乱大交蜜桃| 亚洲视频一区二区免费在线观看| 欧美一区影院| 欧美福利电影网| 狠狠色狠狠色综合日日tαg| 男人的天堂亚洲| 狠狠色综合色区| 欧美色精品天天在线观看视频| 亚洲三级免费电影| 亚洲免费一区二区| 尤物九九久久国产精品的分类| 欧美区国产区| 先锋影音国产一区| 91久久久久| 久热这里只精品99re8久| 亚洲片国产一区一级在线观看| 欧美精品日韩一本| 亚洲欧美日韩天堂| 亚洲精品久久久蜜桃| 久久久久一区二区三区| 99精品欧美一区二区三区| 国产一区二区日韩精品| 久久综合九色| 先锋a资源在线看亚洲| 亚洲人成绝费网站色www| 久久久91精品国产| 美女精品在线观看| 亚洲永久免费| 欧美激情aⅴ一区二区三区| 亚洲一区一卡| 亚洲三级电影全部在线观看高清| 国产麻豆精品久久一二三| 欧美日本中文字幕| 欧美不卡在线视频| 美女诱惑黄网站一区| 久久久久久久一区| 久久精品欧美日韩精品|