你上面那一段话,对于初学者来说确实坑爹,说的像什么官方话语,我看着也就只能理解个模糊大概。
创新互联建站是一家成都做网站、网站设计,提供网页设计,网站设计,网站制作,建网站,按需策划设计,网站开发公司,2013年至今是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。
先给你举个例子吧,函数指针的写法
int
*p;
int
a;
p=a;
//这是一般整型指针
#include
iostream
using
namespace
std;
int
arr(int
a,int
b){return
0;}//比如说是函数1
int
brr(int
a,int
b){return
1;}//比如说是函数2
int
main()
{
int
(*frr)(int,int);
//这里就是函数指针
frr
=arr;
//它可以指向arr
coutfrr(1,2)endl;
frr=brr;//也可以指向brr,只需要改改指向的对象,就可以操作不同的函数
coutfrr(1,2)endl;
return
0;
}
1、指针的优点
是标识一块内存。电脑内存上的每一个字节都具有一个编号,称为地址(可以简单理解为指针),任何读写内存的指令都必须携带地址信息,否则电脑不知道读写那块内存。
不管程序是用什么语言写的,要运行数据和代码必须驻留内存,CPU要执行指令必须有一个“指针”程序计数器指向内存的代码块,如果某个指令要操作内存数据,该指令必须携带额外的地址信息。
2、指针的缺点
指针可以操作任何东西,所以指针很灵活、很强大,但也引入了复杂性。
扩展资料
1、指针利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。
2、输出一串字符时,只需要知道它的第一个字符的地址,就可以将这个字符串输出,而第一个字符的地址,可以用指针储存。所以有n个字符串时,就可以用n个指针来储存。
3、为了保存一个数据在内存中的地址,就需要指针变量。因此指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。
指针有多强大,我难以形容。在值的传递过程中,有两种方法:一种是值传递;一种是引用传递,及地址传递。不用想,引用传递比值传递的效率高很多。因为在值传递的过程中;比如说:你要传递一个值为Y的变更到另一个函数去。如果是值传递的话,你可能要给分配两个存储地址,如果是引用的话就不用了。在内存中,是整形的变量,他就会分配32768到-32767这么大的空间。。
函数指针一般用来做回调的,一般多线程用的多,因为线程之间,栈空间不一样。还有就是封装好的程序,做回调的,比如我写了一段程序,想要给你用,如果我内部没有回调,你就要改动我的程序。但我这样写,我的执行过程是123,二这个步骤,我用函数指针封装起来,如果等于空就不执行,然后你来用,只需要把我的函数指针,指向你的函数,我这个程序是不是就可以不改代码,然后把你的代码加到中间了,所以,函数指针除了线程中,通过传递消息,根据消息相互调用,之外,也是封装的一大利器,如果管理的好,还可以减少代码雍种,写的好,增加可读性。当然你可以不用,也能开发同样效果的东西,难度要大很多,特别是代码到千行以上
C语言中函数指针与普通指针没什么差别,只是指向的内容不同而已。主要作用:
1、实现面向对象编程中的多态性。
2、回调函数。
函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。
函数指针有两个用途:调用函数和做函数的参数。