C语言中指针很难学吗

如题如题... 如题如题 展开
 我来答
tattackor
推荐于2016-10-17 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:852万
展开全部
一般人觉得指针难学因为在学指针前还没把表达式和变量的概念搞清楚。
1. 指针变量保存的是内存地址。用指针访问数据也称为间接寻址。类似于你找一个人,他住在“第一大院”。你直接去找第一大院就是直接寻址。如果他的住址只有一个住在“第五大院”的人知道,你去第五大院问出他家在第一大院这就是间接寻址。
1.+ 对于上面这种情况,如果我们认为第五大院是“知道他家住址的那个人的住址”,我们就可以进行一连串的间接寻址。另一方面也说明指针变量保存的地址也是数据的一种。
2. 指针变量的类型。指针变量的类型目的*仅仅*在于减少编程中可能发生的错误。这一点必须明确。根本上说指针变量的类型就是地址。我们为了避免不必要的错误强行加上了“只能保存整数的地址”之类的约束。好比住在第五大院的人只会去记中年人的地址。
3. 指针的操作。
3.0 声明:类型A的指针的类型写作 类型A* 比如int*。与此同时int*本身也是类型,我们可以写int**。就是int的指针的指针。
3.1 获取地址,对于内存变量表达式 &运算符可以获得其地址,类型是表达是类型的指针。比如对于变量int a。&a获得的就是类型是int *的a的地址。
3.2 重定向,对于指针变量或者指针变量表达式。*运算符可以获得其指向地址的变量,类型是原指针的上一级。对于int a; int* p = &a; *p等价于a,类型是int。因为*p是变量,我们可以进行x = *p(取值)和*p = 0(赋值)操作。
3.3 &和*都可以对变量表达式进行操作。比如数组int a[10]。我们可以通过&a[5]获得a第5个元素的地址。又如int** a。*a是一个int*类型的变量,我们可以进一步地**a获得类型是int的变量,这就是从第六大院的人口中问出知道A君住址的人在第五大院,然后再去第五大院问出A君住在第一大院的过程。
4. 数组和指针的混合。这个可以说是C/C++语法的bug...
int* a[4] 这个类型可以看成(int*)[4] 元素是int*类型,有4个元素
int (*a)[4] 这个其实是(int[4])* 指向int[4]类型变量的指针。
4.+ 数组变量其实也是指针。int b[4]; 变量b在多数情况下就是一个const int*,指向数组b所占用的内存,也就是数组b的第一个元素。*b和b[0]是等价的。对于int *a;我们可以直接进行a = b的操作,让指向数组b。
5. 指针的加法。对于int *a;我们可以进行a + N, a - N的运算。a + 1指向a指向的元素的下一个元素,相应的a - 1指向上一个元素,以此类推。于是*(a + 1)就对a指向的下一个元素进行重定向,等价于数组运算a[1]。
5.+ 对于int *a, *b; a - b获得的是b到a之间相差多少个元素,类型是int。比如 int x[5]; int *a = &x[0], *b = &x[3]; b - a的结果是3。相应的a - b的结果是-3
这些大体概括了指针的基本内容,可能有疏漏,指针的应用就是指针的基本操作和其他表达式、变量操作的配合。
鲜钧eU
2009-07-12 · TA获得超过3026个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:338万
展开全部
指针是c语言的精华。在c++中指针也很常用,只是更多的使用引用,但引用实质上传递的也是指针。

指针很灵活,所以刚开始学习时会有些难度。怎么办?一句话多写多上机调试写好的程序。谭浩强<<c程序设计>>一书上指针一章讲的非常好,这一章应该精读。
指针实例:(冒险岛乐乐指针问题集)
http://zhidao.baidu.com/question/79838545.html
http://zhidao.baidu.com/question/79567174.html
http://zhidao.baidu.com/question/88454662.html

去网上下载下面这个pdf电子书,这个总结非常详细,然后反复看:
C_C++指针经验总结
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xaz0202
2009-07-12 · TA获得超过130个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:119万
展开全部
这里介绍c语言的初级运用http://hi.baidu.com/zhayuewan/blog/item/298a10d91a00f6ee39012f3b.html
这里介绍高级用法
http://www.javaeye.com/wiki/topic/416199

就我看来指针其实不是很难的,关键你要彻底理解指针的涵义,理解透彻之后,你再看那些指针用法,你就会发现指针相当好用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-07-12 · TA获得超过5530个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4382万
展开全部
不会比其他的部分更难学, 只是用的时候更容易出错而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bababee
2009-07-12 · TA获得超过408个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:403万
展开全部
指针开始有点难理解,把它像概念一样背下来就好了,时间长了就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式