| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖, 1 人收藏
标题:数组 指针
只看楼主 加入收藏
_改变自己_
Rank: 2
等 级:论坛游民
帖 子:21
专家分:39
注 册:2011-7-26
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:16 
数组 指针
有高手能详细讲解下数组与指针么··
给个链接也好·自学看不懂啊·
搜索更多相关主题的帖子: 链接 自学 
2011-07-29 13:54
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:5 
回复 楼主 _改变自己_
去我贴下载120-150  讲的很详细

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-07-29 13:59
_改变自己_
Rank: 2
等 级:论坛游民
帖 子:21
专家分:39
注 册:2011-7-26
收藏
得分:0 
—_—!我贴是个什么东东啊··
大侠能给个链接否··
2011-07-29 14:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
你把指針想象為鼠標,看看鼠標游移指示是什麽意思。
數組等於數學上的數列。

數組的下標,指明這是第幾個元素,那麽如果知道第一個元素的真實位置(比如屏幕上一個點的坐標),則只要將起始位置加上下標個單元,就把指針(鼠標)移動到那個下標標示的數據上面了。比如,在屏幕上第3行第2列有一橫排文字string[] = "Hello,world!",可以用一個叫指針p的東西,記錄字符'H'的位置,這時p叫起始指針,即string[0]的地址(第3行第2列),現在我們說string[4]是什麽呢?因爲4是下標,表示數組中的第5個元素(C從0開始計算,第一個是0,則4是第五個),所以此時可以將指針p往前移動4個單元(因爲是字符數組,每個單元是一個字符的長度,不要管字符佔多少字節,只算字符數),即p+4就是所求元素的地址,這只是地址,現在取它的内容,ch = *(p+4)就是内容了,此時,你得到的ch是字符'o',亦即string[4],所以*(p+4) = string[4],*p = *(p+0) = string[0]。

現在囘過頭來看原先的變量聲明。我們聲明char *p的時候,意思是說p是一個指針,它應該指向一個char類型的數據對象。所以,p是地址,*p才是這個地址上的内容,前者是門牌號碼,後者纔是實體。所以,看看上面,*(p+4)確實必須與一個char數據對應,如果不是這樣,編譯器就會給出警告,因爲你原先聲明過char string[]的數組元素是char,兩邊應該是相同的。

同樣是屏幕上的字串例子。我們不用管當前屏幕上顯示的字符是多大的,它可能是9磅的字,也可能是12磅的字,但sizeof(char)會告訴你,現在的字是多大,你不要預測sizeof(char)的具體數值,只要用它的結果,千萬不要自作聰明,sizeof(int)等於2或4,它等於多少,是視程序在什麽機器和操作系統上以什麽模式運行而定的,寫正確程序的修養,是不要假定它的具體數值。這相當於不要假定當前屏幕的字體都是9磅,把鼠標往右移動9個1磅的位置,這樣很可能是錯的。在你的機器上是9磅,在我的機器未必是9磅。

[ 本帖最后由 TonyDeng 于 2011-7-29 14:27 编辑 ]

授人以渔,不授人以鱼。
2011-07-29 14:15
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
回复 4楼 TonyDeng
你回答的 指针很正确!但 我 认为数组不是数学上的数列  而是自由排列组合


墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-07-29 14:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
數列不需要有排序的,元素不排序,但下標是排序的,這叫數列。

授人以渔,不授人以鱼。
2011-07-29 14:25
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
这是数列的解释,数组我认为不是这样
若是二维
00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
40 41 42 43 44
我认为是自由排列组合
我高中过来的  数列 是1+2+3+.......+n

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-07-29 14:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在C眼中,多少維的數組都是一維的。記住:計算機是綫性的結構,一維的,所有多維的數據結構都是模仿出來的。包括你現在看到的屏幕,你以爲是二維的,但計算機看它是一維的,所以屏幕上的像素是一個綫性内存空間。掃描一個數組的時候,按順序先橫後竪的掃描,比先竪後橫要快,因爲後者要來回跳躍。

[ 本帖最后由 TonyDeng 于 2011-7-29 14:44 编辑 ]

授人以渔,不授人以鱼。
2011-07-29 14:40
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
你没说 在C语言中好吧 你是说数组是数学中的数列
你回的贴 我肯定是 一字一句 认真看的

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-07-29 14:42
Scarboy
Rank: 1
来 自:巴中
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-7-29
收藏
得分:5 
大哥下次别用繁体了
2011-07-29 14:42
快速回复:数组 指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017561 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved