----------------解决方案--------------------------------------------------------
指针不难明白啊。
----------------解决方案--------------------------------------------------------
还是有点模糊啊``````
静思````int *``类型的指针````怎么用汉语说啊````
静思``如果在32上```int 类型占2个字节```int *p``后``
要p=&a;
p要占4个字节把````那么&a后``得到一个地址应该还是4个字节吧```但是这4个字节是int的第一个
内存单元还是第2个内存单元啊```
上面还有个人说的``但是看不懂```
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]死了都要C[/underline][/bold] 于 2007-11-26 19:16 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1115930&ptid=188450][/url]
还是有点模糊啊``````
静思````int *``类型的指针````怎么用汉语说啊````
静思``如果在32上```int 类型占2个字节```int *p``后``
要p=&a;
p要占4个字节把````那么&a后``得到一个地址应该还是4个字节吧```但是这4 ...
还是有点模糊啊``````
静思````int *``类型的指针````怎么用汉语说啊````
静思``如果在32上```int 类型占2个字节```int *p``后``
要p=&a;
p要占4个字节把````那么&a后``得到一个地址应该还是4个字节吧```但是这4 ...
int *p =&a;
还有什么不明白的。
p 指向的是int 数据。 /* 使用 *p 只能得到一个int 数据 */
别忘了指针本身也是有数据类型的。
//
----------------解决方案--------------------------------------------------------
我现在不明白的是```地址是怎么取出并放到指针变量里的```
比如``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只占一个字节``即一个内存单元``取其地址就取了这个内存单元的地址``
但是其他类型就不只是占一个内存单元了```那么取其地址``又是取的那个单元的地址?
----------------解决方案--------------------------------------------------------
怎么没有高手继续解释了 关注中..................
----------------解决方案--------------------------------------------------------
LZ问得有点深了,关注中~
----------------解决方案--------------------------------------------------------
我认为在学习指针的时候只要把* 和 &搞懂了就很好解决
----------------解决方案--------------------------------------------------------
指针也是变量 占了一个内存单元 一般我们都用32位的吧 lz这边把应该是内存单元搞错了
char是一个字节没错 也要用一个内存单元来存放它 但char只占了1/4个单元 而double占了两个内存单元 指针存放的是这两个内存单元的第一个 然后编译器再根据指针类型决定取多少位 我是这样理解的
----------------解决方案--------------------------------------------------------
指针根据所指变量的类型,可以确定它所覆盖的范围。。
也就是说,如果int i=0; // i的内存占4字节,便有四个地址
int * ptr=&i; //ptr指向i,所以ptr存放了i的首地址,并根据ptr所指的类型,确定了ptr覆盖的范围,即ptr实际覆盖了i的所有地址.....
----------------解决方案--------------------------------------------------------