C指针学习
前言
指针是C/C++的精华,未能很好地掌握指针,那C/C++也基本等于没学。指针作为C语言学习中最大的障碍,可什么是指针?指针的基本概念很简单,就是一个存放内存地址的变量。对于指针、数组和内存管理,我在学习的时候,发现很多书上都讲的比较简单,可当我们开始应用指针并试图读懂那些代码时,就不知道该如何了。为掌握指针的高级应用,我开始了从简单的知识入手,扎实基础的学习,在C程序如何管理内存和组织方式的基础上理解指针。
这里整理了我学习、使用指针时遇到的些许问题。
为什么要精通指针呢?可能有人说,写程序的时候能不用指针也能实现同样的功能。我不能说不对,可当与使用指针的同一程序相比,两个相差几千里。当你了解了指针你就会明白我为何会这样说了。
- 用指针可以写出快速高效的代码,因为指针更接近硬件,编译器更容易执行。
- 为解决很多类问题提供方便的途径。像很多数据结构的实现,指针相对于其他方式(如数组)更加直观,也更灵活。
- 支持动态内存分配。C的动态内存分配实际上就是通过使用指针实现的。
- 使表达式变得更加紧凑和简洁。
- 提供用指针传递数据结构的能力而不会带来庞大的开销。
- 保护作为参数传递给函数的数据。
指针是创建和加强应用的强大工具,但使用过程中要注意,以免发生以下及其他问题。
- 访问数组和其他数据结构时越界;
- 自动变量消失后被引用;
- 堆上分配的内存释放后被引用;
- 内存分配之间解引指针。
可阅读