本篇文章主要是讲在我们C语言中,我们具有畏惧感的知识:指针,所以在平时的开发中也是用得比较少的,甚至基本不用,似乎好像一用就会出毛病,其实并没有这么可怕,指针是C语言的精华,也是C语言的难点,破解C语言指针,会让你的C语言水平突飞猛进,下面仅用文字进行说明指针有关知识,让我们简单有趣的理解指针。
我们都知道c语言的最大特点是能够直接访问内存,也就是我们的c指针。指针:其本质就是用来访问内存的工具,它存储的是数据在内存中的地址而不是数据本身的值,那么我们只需要知道我们内存中什么东西,我们就知道指针能够访问什么东西,内存中是一些什么东西?简单点说我们的内存中放的东西就是我们平时编程中用到的变量,这个变量里面的内容就是我们程序员自己规定的含义!
这么说当我们需要访问、修改变量内容时,就可以不需要通过我们的变量名进行获得了,我们只需要知道这个变量在内存中的位置(可能是相对位置,或者绝对位置)就可以通过一个指针变量访问所有的数据。当然可以反过来思考一下,我们除了用指针,还有什么高级技巧能够获得内存中所有的数据信息!所以说指针是精髓!
当然有部分同学可能会问,通过指针访问所有内存又有什么用呢?所要说的是:数据与数据最重要的就是关系,那么我们通过指针就能够设计内存的访问算法,从而设计比较统一高效的应用算法!
定 义 | 含 义 |
int *p; | p 可以指向 int 类型的数据,也可以指向类似 int arr[n] 的数组。 |
int **p; | p 为二级指针,指向 int * 类型的数据。 |
int *p[n]; | p 为指针数组。[ ] 的优先级高于 *,所以应该理解为 int *(p[n]); |
int (*p)[n]; | p 为二维数组指针。 |
int *p(); | p 是一个函数,它的返回值类型为 int *。 |
int (*p)(); | p 是一个函数指针,指向原型为 int func() 的函数。 |