c语言指针函数实例初学 有关函数和指针的一个问题

指针是c语言指针函数实例的精髓对于初学者来讲,指针是c语言指针函数实例语法学习中比较难的知识点而这里面指向函数的指针更是不太容易理解。

下面给大家讲下怎样学习理解c语言指针函数实例中指向函数的指针及编程方法和使用例子

注意:这是一篇关于c语言指针函数实例编程的基础语法内容,c語言指针函数实例大神请绕过

首先,先不要把指向函数的指针认为太难了它和普通的指针区别也不是太大,只是定义形式上有所区别

比如,对于一个指向整形的普通指针定义形式如下:

在定义中,指针变量的名称是p符号“*”说明了p是一个指针,int说明这个指针指向嘚是整形变量

那么,如果我们定义一个指向函数的指针假设变量名称为p,比如它指向这样的一个函数这个函数需要两个整形参数,其返回值也是整形参数其定义如下:

对这个定义分解一下,其中p是变量的名称,符号“*”说明了p是一个指针由于这个指针指向的是┅个函数,所以在定义中必须体现函数的输入输出参数信息那么最前面的int指的就是函数的返回值为int类型,后面的(int, int)则定义了该函数需偠两个整形的输入参数另外,必须将“*”与“p”必须用括号写成(*p)的形式否则,由于括号的优先级大于*的优先级去掉括号的话就荿为另外一种意思了。

这样对比着理解指向函数的指针似乎与普通指针区别也不是太大。

指向函数的指针编程例子

下面通过一个例子演礻指向函数的指针的使用方法

该例子的功能是,对于一个输入的一维数组定义三个函数findMax、findMin和getAvg,分别实现查找该数组的最大值、最小值忣计算该数组的平均值这三个函数的输入输出参数完全相同。定义一个fun函数在该函数的参数中,需要一个指针变量作参数这个指针能够指向上面的三个函数。在主程序中调用fun函数,根据传入不同的p值实现对输入的一维数组作不同的处理功能

下面先看下几部分的实現代码吧。

这三个函数对一维数组x分别作求最大值、最小值及平均值的处理,并将其结果返回c语言指针函数实例代码如下:

这三个函數比较简单,函数原型完全一样输入参数为一个指向double的指针x及x的元素个数n,输出参数也就是返回值是一个double型的数值

2、fun函数的代码实现

該函数输入参数为3个,前两个为指向double的指针x及x的元素个数n第三个为一个指向函数的指针类型,这个指针能够指向上面的三个函数c语言指针函数实例代码如下:

那么,在主程序中可以调用该函数只要输入不同的p值,就可以对输入的一维数组作不同的处理运算

主程序c语訁指针函数实例测试代码如下:

第43-44行定义了一个包含5个元素的一维数组x及存储数据处理结果的变量max、min及avg。

第46-48行调用fun函数,将函数findMax、findMin和getAvg的洺称作为参数传入到该函数中在控制台上输出其处理运算结果。

其运行界面如下图所示:

可见在这个例子中已经成功的使用了指向函數的指针作为参数,并得到了正确的运行结果

指向函数的指针,理解其定义形式掌握其基本用法,似乎也不是太难了

}

本文档一共被下载: 次 ,您可全文免费在线阅读后下载本文档

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理

2.该文檔所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值立即自动返金币,充值渠道很便利

}

c语言指针函数实例的指针关键意思在于“指”。

其实完全可以理解为指示的意思比如,有一个物体我们称之为A。正是这个物体有了这么个称谓,我们才能够进行脫离这个物体的实体而进行一系列的交流将一个物体的指示,是对这个物体的抽象有了这种抽象能力,才有所谓的智慧和文明所以這就是“指示”这种抽象方法的威力。

退化到c语言指针函数实例的指针指针是一段数据/指令(在冯诺易曼体系中,二者是相通在同一涳间中的)的指示。这是指示也就是这段数据/指令的起始位置。但是数据/代码是需要一个解释的方法的比如0x0001,可以作为一个整数也鈳以作为作为一串指令,也可以作为一串字符总之怎样解释都可以。

而c语言指针函数实例在编译阶段,确定了这段数据/指令的“解释方法”
例如,整型指针表示的就是可以从这个指针p指向的位置开始解释,解释为一个整数
一个函数指针,表示的就是可以从这个指針p指向的位置开始解释解释为一段指令,对应的输入和输出以及返回值按照函数指针的类型符合相应的要求。

综上c语言指针函数实唎的精髓是指针,但指针不仅仅是c语言指针函数实例的精髓它是抽象的精髓。各个语言中都有类似的东西例如函数,例如引用

(引鼡和指针的区别,我的理解不可以进行+/-偏移操作的指针,就是引用随意偏移,很容易使得目标位置不符合其相应的意义从而造成解釋失败,进而崩溃而增加了偏移功能的指针,好处是方便表述一堆具有相同类型的数据/指令数组之类的就是这样的实例。)

同样的void类型嘚指针也是c语言指针函数实例的特色。void型的指针就是去掉了指定类型的指针,从而使得可以以任意解释方式解释指针,这就带来了洳上的潜在问题但是也可以说,这个c语言指针函数实例的特有威力(我一般都把c语言指针函数实例的威力理解为这个)这个带来的好處非常之灵活。因为可以使用统一的类型来表述所有类型的数据带来的问题,和上面是类似的就是如果解释方法不当,就会造成灾难性的后果c语言指针函数实例的强制类型转换也是打破常规的指针解释.也有可能带来问题.

下面来看一下关于指针的一些基础知识:


  

  

&i是i的地址,指针p保存了i的地址*p是取指针的值,也就是i的值

2. 指针类型的参数和返回值

/* 定义一个返回值为指向int类型的指针的函数 */ 
 

return px相当于定义了一個int类型的临时指针来保存px,然后再把这个指针赋给指针m所以m的指向和px是一样的。


  

  

数组名作为参数传递时实际传递的是第一个元素的指針,从上面的输入可以看出
指针pa++是让pa指向下一个元素。


  

const int 和 int const是一样的都是定义一个指向const int类型的指针。所以*x是不可变的不能执行(*x)++这样的操作,但是x是可变的可以执行x++的操作。


  

上面定义的是一个指向int类型的const指针所以z是不可变的,但是指针的值是可变的要定义都不可变嘚指针就是:


  

  

*ppc取的是pc的值,而**ppc就相当于*pc就是c的值。

}

我要回帖

更多关于 c语言指针函数实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信