| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1282 人关注过本帖
标题:初学者 如何学好指针
只看楼主 加入收藏
mfyzlw
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-29
收藏
 问题点数:0 回复次数:7 
初学者 如何学好指针
我刚开始学C++;自学的 看书看不太明白
指针这里有点混乱,一会又是*P,一会&地址,条用的时候又是P;
高手帮忙给具体解释一下 ,,谢谢

[[it] 本帖最后由 mfyzlw 于 2008-11-29 12:05 编辑 [/it]]
搜索更多相关主题的帖子: 指针 
2008-11-29 11:49
wanglesa
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-29
收藏
得分:0 
*指针符  &地址符   我也是刚刚学到指针这里 还能学懂
2008-11-29 13:25
wanglesa
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-29
收藏
得分:0 
char **p; //二级指针,指向一个char *型的变量(即字符指针)
char (*p)[4]; //和二级指针差不多吧,指向带有四个元素的char 型数组的,不过它与char **的区别在于,它的计算(比如指针自增)时定量的,也就是多了个 数组元素是4的信息
如下
char **p;
char (*q)[4];
char a[4][4];
q = a//正确
p = a//不兼容指针类型转换,警告
如果进行计算,比如输出q[1][0],其实就是*(*(q + 1) + 0),编译器就不知道q + 1实际该加多少,
然而用p的话就知道实际是地址加4个char的大小

char *p[4]; //指针数组,p不是指针, 是个数组名
不过这个数组的元素是char *型的,也就是字符指针

给你个例子看看
2008-11-29 13:29
hitcolder
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-10-28
收藏
得分:0 
回复 楼主 mfyzlw 的帖子
*指针符   一般会用来1。进行指针的定义:比如char  *p;
           2。要么就是对指针进行操作,比如说char *p=&b;*p='a';*p='a'其实和b=a的意思一样
&就是用来取地址给指针进行赋值,不过保证指针和取地址的变量类型一致就行了。

感觉记住这些然后对照程序自己多编,多理解下应该就问题不是很大吧

不要在你的智慧中夹杂傲慢,也不要使你们的谦卑缺乏智慧的成分。
2008-11-29 14:33
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
收藏
得分:0 
多学多练!就行!

不要在你的智慧中夹杂傲慢,也不要使你们的谦卑缺乏智慧的成分!
2008-11-30 16:17
wqstar028
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-12-1
收藏
得分:0 
*P
这种格式其实就是取一个地址中的数据,这里的P是一个地址,通常,我们可以把计算机内存比成是一幢大厦,里面有很多的房间,所以我们得把所有的房间都编一个号,这样就方便查找了,而计算机也是这样,为了方便在内存中取得数据,因此我们把内存也给编上号,而这个号就是指针.一个指针指向一个变量的首地址.这样说你应该明白了吧?

比如:
char p;
其实这里编译器就会对变量p分配一个内存空间,假设p分配到的地址是内存中的第2000位内存空间,那么2000就是变量p的指针,指向变量p,我们可以用&p来取得变量p的指针.下面我们再定义一个变量
char *pp;
这里的pp就是一个指针变量,用于存放指针,我们结合上面叙述,来看
pp=&p;
这样我们就把变量p的指针赋给了指针变量pp,也就是说,我们把指针变量pp指向了变量p的首地址了,所以,此时我们不但可以通过变量p来读写数据,也可以通过指针变量pp来读写变量p里的数据了.
main()
{
char a,b;
char p;//定义普通变量
char *pp;//定义指针变量
pp=&p;//将普通变量与指针变量联系起来
p=127;
a=p;//将变量p里的数据赋给变量a
b=*pp;//将指针pp指向的地址中的数据赋给变量b;
printf("a=%d  b=%d\n",a,b);
return 0;
}
这里我们应该看到a,b的值是一样的.
楼主可以这么认为:
&号取地址,表示取一个变量对应的首地址,因此后面跟的变量应该是普通变量.
*号取数据,表示取一个指针指向的地址中的数据,因此后面跟的变量应该是一个指针变量.

另外补充一下,对于数组来说,如果没有下标或下标不全,那他本身就是一个指针,因此就不能再用&号取地址了!
如:
char *p;
char a[5];
p=a;//这里不能写成p=&a;
说完了,如果有错请高手指正

[[it] 本帖最后由 wqstar028 于 2008-12-1 14:04 编辑 [/it]]

我也是新手,还望高手多多指教!
2008-12-01 13:57
zzt_428
Rank: 2
来 自:南京师范大学
等 级:论坛游民
威 望:2
帖 子:243
专家分:22
注 册:2008-7-6
收藏
得分:0 
只要搞清楚表达式的结合方向和结合优先级,理解指针很容易~~~~~~~~~

学习切忌浮躁.
2008-12-02 09:16
zuoping120
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-12-2
收藏
得分:0 
多练多练!=难的不会,会的不难啊!
2008-12-03 12:27
快速回复:初学者 如何学好指针
数据加载中...
 
   



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

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