c语言指针博大精深 需要自己在实践中去慢慢体会,但是今天我还是根据自己在编程中遇到的问题来谈谈指针重要的部分
一,至于指针定义本质什么的 不多加阐述,通过以下例子我们来分析一下指针,指针用的最多的是一下几种:
1)、int *p;
2)、int**p;
3)、int(*parValue)[3];
4)、int(*pFun)();
我们下面分别分析一下这几种情况:
1. int *p *代表变量(指针本身)的值是一个地址,int代表这个地址里面存放的是一个整数,这两个结合起来,int *定义了一个指向整数的指针
2.按照1推下去 int ** 指向一个指向整数的指针的指针
3.int(*)[3]指向一个拥有三个整数的数组的指针
4.int (*)()指向一个函数的指针,这个函数参数为空,返回值为整数。
二,指针本身的值
无论什么情况 32位的系统中指针都占四个字节
三,至于指针的好处,好处太多,我只需列举一些:
1)、方便使用动态分配的数组。
2)、对于相同类型(甚至是相似类型)的多个变量进行通用访问。
就是用一个指针变量不断在多个变量之间指来指去,从而使得非常应用起来非常灵活,不过,这招也比较危险,需要小心使用:因为出现错误的指针是编程中非常忌讳的事情。
3)、变相改变一个函数的值传递特性。
说白了,就是指针的传地址作用,将一个变量的地址作为参数传给函数,这样函数就可以修改那个变量了。
4)、节省函数调用代价。
我们可以将参数,尤其是大个的参数(例如结构,对象等),将他们地址作为参数传给函数,这样可以省去编译器为它们制作副本所带来的空间和时间上的开销。
5)、动态扩展数据结构。
因为指针可以动态地使用malloc/new生成堆上的内存,所以在需要动态扩展数据结构的时候,非常有用;比如对于树、链表、Hash表等,这几乎是必不可少的特性。
四,指针本身问题:
1)指针所指向的内容删除后也要清除指针本身
说到这里对指针会有一个大致的了解吧,在第二章中我会谈一下指针与数组的关系。