C语言中指针很难学吗

如题如题

一般人觉得指针难学因为在学指针前还没把表达式和变量的概念搞清楚。
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
这些大体概括了指针的基本内容,可能有疏漏,指针的应用就是指针的基本操作和其他表达式、变量操作的配合。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-12
指针是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++指针经验总结本回答被提问者采纳
第2个回答  2009-07-12
这里介绍c语言的初级运用http://hi.baidu.com/zhayuewan/blog/item/298a10d91a00f6ee39012f3b.html
这里介绍高级用法
http://www.javaeye.com/wiki/topic/416199

就我看来指针其实不是很难的,关键你要彻底理解指针的涵义,理解透彻之后,你再看那些指针用法,你就会发现指针相当好用的。
第3个回答  2009-07-12
不会比其他的部分更难学, 只是用的时候更容易出错而已
第4个回答  2009-07-12
指针开始有点难理解,把它像概念一样背下来就好了,时间长了就好了

c语言哪个最难
最难的部分:C语言中的指针最难掌握。C语言中的指针是C语言的核心特性之一,也是其强大和灵活性的来源。但同时,指针也是C语言中难度最大的一部分。指针涉及到内存管理和地址操作,需要深入理解计算机内存结构和内存管理机制才能有效使用。不当的指针操作可能会导致内存泄漏、野指针等问题,使得程序出错甚至...

学C语言的指针,有没有什么好的方法啊?
个人觉得C中的指针没什么难的,你就想象成快捷方式就可以了,如果没有*就是快捷方式本身,如果带*就是你双击了快捷方式,挺好理解的 也就是二级指针难点,但如果一级指针学透了的话也不会太难的,总之就要多使用,在学习指针的阶段,用数组等的地方时,尽量使用指针,实践出真知,不会太难的 ...

为什么c语言指针那么难?
指针确实难于理解。指针具有两个身份:第一,指针本身是一个变量。只要是是变量,它就占用内存地址。当然如果没有分配内存地址,不在其内。第二,指针包含一定的一个内容。指针所特殊的就是,他的内容保存的是其他变量的地址。以上两点可以通过书中的示例7-7有比较好的体现。例如,定义指针变量intp1。

c语言指针怎么复习啊,太难了
兄弟,指针不是很难,哥哥随便说几句,也许能帮助你!先说说变量, 什么是变量?变量就是程序在运行中可以改变的量,是数据存放的临时场所。每个变量都对应一块内存空间,变量的地址就是变量对应内存空间的首地址。也可以理解为变量放在内存空间中的位置。当我们定义了一个变量之后,该变量就对应了一块内...

C语言指针问题(初学者)
0]时,才能省略为p=c 4.还有一些复杂的指针应用,比如指向指针的指针,或者指向函数的指针,那些更复杂,二级考试中很复杂的一般考的不多,建议将基本的学习好;这个东西要靠自己慢慢理解,理解了,其实简单,不理解,很难,呵呵。写了不少,希望能对你的学习有所帮助,不对的地方,请海涵!

在C语言中,到底是指针难 学还是算法难学?
并彻底了解指针的概念。但算法不同,没人敢说自己对所有算法都掌握并能熟练运用了。同样,在C语言中,对指针本身的研究基本停止了,毕竟这只是一个工具,就象没人肯研究锤子本身一样。人们主要研究的还是算法方法的东西。也就是怎么把工具用的更好。所以,算法难学 ...

C语言指针的用法是什么?
利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时,指针也是C语言中最为困难的一部分,在学习中...

C语言 关于POINTER(指针)的问题, 急!!!
C 的 pointer (指标, 另一常译为指位器)一般是被认为 C 语言中最具威力的工具及 最难以学习的, 事实上 pointer 并不困难. 第一个范例: \/* === pointer - 1 === *\/ #include <stdio.h> int main() { char *s_pointer = “Hello”; char s[] = “World”; printf(“%s\\n”...

c语言中指针好学吗,我听不懂但看题目好像很简单,能有人给我指点一下嘛...
在C语言中“指针表示的就是地址”,关键要弄清指针变量的指向,即指针指向的地址。然后用指针运算符“※”可以得到指针所指地址的值。打个比方:你要找到张三,张三的地址 = xx大厦xx单元2楼05号,指针就相当是“张三的地址”:"下标不从 0开始,如floor[1]door[2]表示第1楼的第2号的人"。张三...

在C语言中什么是指针
指针是C语言里面的一个重要概念,也是C语言的难点之一.指针可以表示许多复杂的数据结构,如队列,栈,链表,树,图等.要学习指针,应该先了解以下几个概念:变量的地址,变量的内容,直接寻址,间接寻址.变量的地址:变量在内存中所占存储空间的首地址.变量的内容:变量在内存的存储单元中存放的数据.如:int a=10...

相似回答