網(wǎng)站首頁
分類導航
試題中心
下載中心
英語學習
繽紛校園
考試論壇
網(wǎng)站留言
客服中心
計算機
:
等級考試
水平考試
微軟認證
思科認證
Oracle認證
Linux認證
外語類:
四 六 級
商務英語
公共英語
GRE
GMAT
托 福
雅 思
資格類:
公 務 員
報 關(guān) 員
司法考試
導游考試
會計職稱
注冊會計師
學歷類:
考研入學
自學考試
成人高考
法律碩士
MBA/MPA
網(wǎng)絡課堂
等級考試
水平考試
微軟認證
思科認證
Oracle認證
Linux認證
考試動態(tài)
|
報考指南
|
考試大綱
|
歷年真題
|
模擬試題
|
復習資料
|
心得技巧
|
考試論壇
您現(xiàn)在的位置:
考試吧(Exam8.com)
>>
計算機等級考試
>>
復習資料
>> 文章正文
登錄
|
注冊
|
升級VIP
馬上加入考試吧VIP
博客個性域名免費搶注
特別推薦
最新熱點
·
2006年9月23日計算機等級
·
2006年9月計算等級考試上
·
2006年9月23日全國計算機
·
2006年9月全國計算機等級
·
考試吧:2006年9月全國計
·
06年9月計算機二級公共基
·
2006年4月計算機等級考試
·
2006年全國計算機等級考
·
2006年全國計算機等級考
·
2006年4月計算機等級考試
·
2005年NCRE考試各級別的
·
2004年版南開C語言100題
·
2004年版南開C語言上機1
·
閱卷教師談等級考試
更多>>
最新推薦
·
2004年版南開C語言100題
·
閱卷教師談等級考試
·
2006年9月計算機等級考試
·
2006年計算機等級考試二
·
2006年下半年計算機等級
·
2006年4月計算機等級考試
·
全國計算機等級考試承辦
·
05年9月計算機等級考試成
·
05年9月等級考試二級C語
·
9月各地計算機等級考試報
·
2005年4月全國計算機等級
·
2005年4月計算機等級考試
·
2005年4月計算機等級考試
·
2005年4月2日二級VFP標準
更多>>
2006年精品輔導課程
C語言筆記 第五章 數(shù)組和指針的關(guān)系
【字體:
大
小
】
C語言筆記 第五章 數(shù)組和指針的關(guān)系
http://m.1glr.cn
來源:考試吧(Exam8.com) 點擊: 更新:2004-8-16
第五章 數(shù)組和指針的關(guān)系
如果對聲明數(shù)組的語句不太明白的話,請參閱我前段時間貼出的文章<<如何
理解c和c++的復雜類型聲明>>。
數(shù)組的數(shù)組名其實可以看作一個指針?聪吕
例八:
int array[10]={0,1,2,3,4,5,6,7,8,9},value;
...
...
value=array[0];//也可寫成:value=*array;
value=array[3];//也可寫成:value=*(array+3);
value=array[4];//也可寫成:value=*(array+4);
上例中,一般而言數(shù)組名array代表數(shù)組本身,類型是int [10],但如果把a
rray看做指針的話,它指向數(shù)組的第0個單元,類型是int *,所指向的類型是數(shù)
組單元的類型即int。因此*array等于0就一點也不奇怪了。同理,array+3是一個
指向數(shù)組第3個單元的指針,所以*(array+3)等于3。其它依此類推。
例九:
例九:
char *str[3]={
"Hello,this is a sample!",
"Hi,good morning.",
"Hello world"
};
char s[80];
strcpy(s,str[0]);//也可寫成strcpy(s,*str);
strcpy(s,str[1]);//也可寫成strcpy(s,*(str+1));
strcpy(s,str[2]);//也可寫成strcpy(s,*(str+2));
上例中,str是一個三單元的數(shù)組,該數(shù)組的每個單元都是一個指針,這些指
針各指向一個字符串。把指針數(shù)組名str當作一個指針的話,它指向數(shù)組的第0號
單元,它的類型是char**,它指向的類型是char *。
*str也是一個指針,它的類型是char*,它所指向的類型是char,它指向的地
址是字符串"Hello,this is a sample!"的第一個字符的地址,即'H'的地址。
str+1也是一個指針,它指向數(shù)組的第1號單元,它的類型是char**,它指向
的類型是char *。
*(str+1)也是一個指針,它的類型是char*,它所指向的類型是char,它指向
"Hi,good morning."的第一個字符'H',等等。
下面總結(jié)一下數(shù)組的數(shù)組名的問題。聲明了一個數(shù)組TYPE array[n],則數(shù)組
名稱array就有了兩重含義:第一,它代表整個數(shù)組,它的類型是TYPE [n];第二
,它是一個指針,該指針的類型是TYPE*,該指針指向的類型是TYPE,也就是數(shù)組
單元的類型,該指針指向的內(nèi)存區(qū)就是數(shù)組第0號單元,該指針自己占有單獨的內(nèi)
存區(qū),注意它和數(shù)組第0號單元占據(jù)的內(nèi)存區(qū)是不同的。該指針的值是不能修改的
,即類似array++的表達式是錯誤的。
在不同的表達式中數(shù)組名array可以扮演不同的角色。
在表達式sizeof(array)中,數(shù)組名array代表數(shù)組本身,故這時sizeof函數(shù)
測出的是整個數(shù)組的大小。
在表達式*array中,array扮演的是指針,因此這個表達式的結(jié)果就是數(shù)組第
0號單元的值。sizeof(*array)測出的是數(shù)組單元的大小。
表達式array+n(其中n=0,1,2,....。)中,array扮演的是指針,故arr
ay+n的結(jié)果是一個指針,它的類型是TYPE*,它指向的類型是TYPE,它指向數(shù)組第
n號單元。故sizeof(array+n)測出的是指針類型的大小。
例十:
int array[10];
int (*ptr)[10];
ptr=&array;
上例中ptr是一個指針,它的類型是int (*)[10],他指向的類型是int [10]
,我們用整個數(shù)組的首地址來初始化它。在語句ptr=&array中,array代表數(shù)組本
身。
本節(jié)中提到了函數(shù)sizeof(),那么我來問一問,sizeof(指針名稱)測出的究
竟是指針自身類型的大小呢還是指針所指向的類型的大?答案是前者。例如:
int (*ptr)[10];
則在32位程序中,有:
sizeof(int(*)[10])==4
sizeof(int [10])==40
sizeof(ptr)==4
實際上,sizeof(對象)測出的都是對象自身的類型的大小,而不是別的什么
類型的大小。
文章錄入:蕭雨 責任編輯:蕭雨
上一篇文章:
C語言筆記 第六章 指針和結(jié)構(gòu)類型的關(guān)系
下一篇文章:
C語言筆記 第四章 指針表達式
【
發(fā)表評論
】【
加入收藏
】【
告訴好友
】【
打印此文
】【
關(guān)閉窗口
】
相關(guān)文章
2006年9月23日計算機二級VF上機操作試題匯總
2006計算機等級考試三級網(wǎng)絡上機模擬題及詳
2006計算機等級考試三級網(wǎng)絡上機模擬題及詳
2006計算機等級考試三級網(wǎng)絡上機模擬題及詳
2006計算機等級考試二級VB上機模擬題及詳解
2006計算機等級考試二級VF上機模擬題及詳解
2006計算機等級考試二級VF上機模擬題及詳解
2006計算機等級考試二級VF上機模擬題及詳解
2006計算機等級考試二級VF上機模擬題及詳解
2006計算機等級考試二級VF上機模擬題及詳解
全國計算機等級考試二級Access考點分析之宏
全國計算機等級考試二級Access考點分析之數(shù)
版權(quán)聲明
如果本網(wǎng)站所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系
,我們將會及時處理。如轉(zhuǎn)載本網(wǎng)內(nèi)容,請注明出處。
發(fā)表評論
關(guān)于本站
網(wǎng)站聲明
廣告服務
聯(lián)系方式
付款方式
站內(nèi)導航
客服中心
友情鏈接
Copyright © 2004-2006
考試吧
(
Exam8.com
) All Rights Reserved
中國科學院研究生院中關(guān)村園區(qū)(北京市海淀區(qū))