天天看点

「C语言回顾之旅」第二篇:指针详解进阶

说明:

    第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的。这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的。

一.指向函数的指针

1.函数指针

·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数;

·编写一个程序返回两个数的最大值,通过函数指针调用函数:

a.main函数代码如下:

b.max函数代码如下:

c.执行过程如下:

·由上面的程序,定义函数指针方法为:

·使用函数指针的方法为:

2.用函数指针作函数参数

·使用函数指针的重要作用是把函数的地址作为参数传递到其他函数;

·编写一个程序,用函数指针作函数参数,让用户选择执行不同的功能:

a.main函数的代码如下:

b.调用其他子函数的fun函数代码如下:

c.返回和的sum函数代码如下:

d.返回最大值的max函数代码如下:

e.返回最小值的min函数代码如下:

f.执行过程如下:

二.返回指针值的函数

1.指针函数

·指针函数即返回值为指针的函数;

·改写函数指针中的第一个程序,使函数的返回值为一指针:

b.返回最大值函数代码如下:

·由此可知,返回指针值函数的形式为:

·定义一个指向指针值函数的函数指针形式为:

三.指针数组与多重指针

1.指针数组

·存放指针值的数组即为指针数组;

·编写一个程序,通过指针数组来存放书名:

b.执行过程如下:

·为便于理解,可用如下示意图形象化:

「C语言回顾之旅」第二篇:指针详解进阶

·由此可知,定义指针数组的形式为:

·注意与指向二维数组指针的区别:

·可通过符号的优先级进行区分记忆,[ ]优先级比*高,指针数组[ ]先结合,是数组,元素值为指针;指向二维数组的指针,*先结合,是指针,指向含有4个元素的一维数组;

2.指向指针数据的指针

·因为数组的处理在编译过程中是按照指针处理的,对于上面的程序,各改为为如下:

·这与正常一维数组的处理是一致的,只是数组存放的也是指针,可能会有一混淆,可用下面图示形象理解:

「C语言回顾之旅」第二篇:指针详解进阶

·可进一步简化为:

「C语言回顾之旅」第二篇:指针详解进阶

·上面的形式为:指针-->指针(字符串首地址)-->字符串首字符,实则为多重指针;

三.动态内存分配与指向它的指针变量

<未完,continue>

继续阅读