| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1835 人关注过本帖
标题:请教个指针的问题
只看楼主 加入收藏
kidd2005
Rank: 1
等 级:新手上路
帖 子:193
专家分:0
注 册:2007-11-2
收藏
得分:0 
我也觉得指针比较难明白啊~~

潜心苦C,却发觉百C不得其解啊~
2007-11-26 15:51
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
指针不难明白啊。

—>〉Sun〈<—
2007-11-26 15:55
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
还是有点模糊啊``````

静思````int *``类型的指针````怎么用汉语说啊````

静思``如果在32上```int 类型占2个字节```int *p``后``

要p=&a;

p要占4个字节把````那么&a后``得到一个地址应该还是4个字节吧```但是这4个字节是int的第一个
内存单元还是第2个内存单元啊```

上面还有个人说的``但是看不懂```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-11-26 19:16
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]死了都要C[/underline][/bold] 于 2007-11-26 19:16 发表 [url=http://bbs.][/url]
还是有点模糊啊``````

静思````int *``类型的指针````怎么用汉语说啊````

静思``如果在32上```int 类型占2个字节```int *p``后``

要p=&a;

p要占4个字节把````那么&a后``得到一个地址应该还是4个字节吧```但是这4 ...



int *p =&a;
还有什么不明白的。
p  指向的是int 数据。 /* 使用 *p 只能得到一个int 数据 */

别忘了指针本身也是有数据类型的。

//

—>〉Sun〈<—
2007-11-26 19:44
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我现在不明白的是```地址是怎么取出并放到指针变量里的```

比如``int a``给a分配2个内存单元```单元1和单元2是连续的``分别有一个地址``

当我们&a后``取的是 单元1 的地址 还是 单元2 的地址``??



然后``int *p``p是用来存放地址的`

静思说   指针本身占的内存即是指针变量的地址  指针在32位机器下所占内存的大小均为4个字节

         sizeof(int *)=sizeof(char *)=4  

意思就是说``在32位机下``每个 内存单元的地址 都是一个为32位(占4个字节)的数``
因为地址要放在这个32位的内存里``
单元1和单元2的地址都占32个位``

结合上面``&a后``得到的地址就是一个32个位的数``然后把它放到占了32个位的指针变量p里面``
但是取的是哪个单元的地址呢``


主要搞清楚3个问题``

1.  在内存中``每一个内存单元的地址``是一个多少位的数或者说要占多少个位``?

2.  指针变量存放的是地址``那么它存放的是一个内存单元的地址还是多个内存单元的地址``?

3.  都知道char只占一个字节``即一个内存单元``取其地址就取了这个内存单元的地址``
    但是其他类型就不只是占一个内存单元了```那么取其地址``又是取的那个单元的地址?

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-11-26 20:25
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
怎么没有高手继续解释了   关注中..................
2007-11-29 18:32
chump345
Rank: 1
来 自:家里蹲大学
等 级:新手上路
帖 子:108
专家分:5
注 册:2007-11-24
收藏
得分:0 
LZ问得有点深了,关注中~

凤凰涅磐,浴火重生!

2007-11-29 19:06
lusan168
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-11-17
收藏
得分:0 
我认为在学习指针的时候只要把* 和 &搞懂了就很好解决
2007-11-29 20:49
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
指针也是变量  占了一个内存单元  一般我们都用32位的吧     lz这边把应该是内存单元搞错了
char是一个字节没错 也要用一个内存单元来存放它  但char只占了1/4个单元   而double占了两个内存单元  指针存放的是这两个内存单元的第一个  然后编译器再根据指针类型决定取多少位  我是这样理解的
2007-12-01 14:23
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
指针根据所指变量的类型,可以确定它所覆盖的范围。。
也就是说,如果int i=0; // i的内存占4字节,便有四个地址
    int * ptr=&i;  //ptr指向i,所以ptr存放了i的首地址,并根据ptr所指的类型,确定了ptr覆盖的范围,即ptr实际覆盖了i的所有地址.....

樱花大战,  有爱.
2007-12-01 14:54
快速回复:请教个指针的问题
数据加载中...
 
   



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

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