| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3465 人关注过本帖
标题:如何区分这几个指针呢?
只看楼主 加入收藏
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
真是大意,刚才同事一直喊我去讨论问题,所以打字比较快,居然出了几个错别字,惭愧,呵呵

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-21 10:52
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

这个是不可争议的事实

第一.数组绝对不是指针(虽然他们很相似)
第二.指针与数组的互相赋值.是必须要有相应的解引过程才可以.


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-21 10:56
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

int i=10;

i 不是指記憶體中的一個地址?
只是在代碼中用 i 來表示地址的內容,
&i 用來表示地址
就兩個東西 0xfffff 和 10
0xfffff 是地址, 10 是值. i 是甚麽? i 是用來存放 10 的東西, i 是甚麽東西, 在哪裏?

int *p = &i;
p 不是指記憶體的一個地址?
只是在代碼中用 p 來表示地址的內容
&p 用來表示地址
0xabdef, 0xfffff,
0xabdef 是地址, 0xfffff 是值, p 是甚麽. p 是用來存放 &i 的東西, p 是甚麽東西, 在哪裏?
---------------------


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-21 11:17
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

我不是想引開話題, "數組名是指針"
"指針是地址"

int a[2][3];

a 表示甚麽, 是不是一個地址
如果是地址, a 爲甚麽不是指針.
如果 a 是指針, 它指向甚麽.
如果不是指針, cout << **a << 是不是不能使用.(* 的意義)


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-21 11:40
dxfantasy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-8-20
收藏
得分:0 
按我的理解
a就是一个指针,不过是一个const类型的!即是a是一个指针常量,不能被改变!
**a就是a[0][0]的内容!!

2006-08-21 11:56
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[QUOTE]int i=10;

i 不是指記憶體中的一個地址?
只是在代碼中用 i 來表示地址的內容,
&i 用來表示地址
就兩個東西 0xfffff 和 10
0xfffff 是地址, 10 是值. i 是甚麽? i 是用來存放 10 的東西, i 是甚麽東西, 在哪裏?

int *p = &i;
p 不是指記憶體的一個地址?
只是在代碼中用 p 來表示地址的內容
&p 用來表示地址
0xabdef, 0xfffff,
0xabdef 是地址, 0xfffff 是值, p 是甚麽. p 是用來存放 &i 的東西, p 是甚麽東西, 在哪裏?[/QUOTE]

这样说没什么意义,实际计算机数据表示就两样,一个是地址,一个是地址中的值,这样用汇编就可以了,为什么还要有高级的编程语言。
i是什么,它是一种抽象,在32位系统中表示一个能存储从-2147483648 到 2147483647范围的整数值的容器,在他上面可以有有int类型的加减乘除等运算。
p是什么,他也是一个抽象,使得可以间接寻址,只不过两个指针之间运算除了相减不允许其他的。


cout<<*((int*)0xffffffff);
可以通过编译吧,虽然不能运行。
他把常数0xffffffff转换成指针类型的常量,不是转换成指针。

cout<<**a; 也一样,只不过是隐式转换。

2006-08-21 12:46
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

yeshirow 的想法的错误的

等俺回来再说..现在有事

如果 yeshirow现在有时间.可以去了解下编译器如何调用变量.再看看编译器如何调用数组.

如果没找到.我回来讲!


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-21 13:14
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
期待求解中.....

沒有相關的資料..

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-21 13:16
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
既然yeshirow要相关资料证明,我刚找了一下,yeshirow你可以查找《c专家编程》一书中4.3.1节:数组和指针是如何访问的,及4.5节:数组和指针的其他区别
及这一章的其它小节都对数组和指针的不同有着解释

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-21 13:23
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
昏,还没讨论完,最近流行C式指针。

http://myajax95./
2006-08-21 13:39
快速回复:如何区分这几个指针呢?
数据加载中...
 
   



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

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