美文网首页
走出 函数指针/指针函数 的混淆世界

走出 函数指针/指针函数 的混淆世界

作者: Invisible_He | 来源:发表于2019-12-15 15:56 被阅读0次

相信很多小伙伴跟我一样,曾经或是现在被函数指针/指针函数 这两个名字搞得头昏脑胀,并且总是傻傻分不清楚,即使是之前某个时候通过百度/Google到的文章搞清楚过,过了一段时间后,又搞忘了。如果您有这样的困扰,那么可以好好看看我这篇文章,或许能将您带出混淆的误区。

指针

要搞清楚这几个混淆误区之前,就不得不搞清楚的就是指针这个玩意儿(ps. 这里主要还是以C/C++语言来对这些个东西进行讲解,毕竟这些个东西在这两门语言中是家常便饭)。

通俗理解指针

我这人写技术文章一直秉持一种想法,就是以自己觉得最通俗易懂的方式将东西写清楚,因此我在此对指针的讲解也是以一种通俗的方式。

我们知道,声明一个变量

int a = 10;

最终的内存布局是这样的

a变量对应着的地址处0x100100存储着10这个数值。

对于指针变量

int a = 10;

int *b = &a;

最终的内存布局就是这样的

从图中可以看出来,其实指针变量b就是和a是个一样的变量而已,只是a的内存地址里存储的直接就是10这个数值,而在变量b的内存地址中存储是一个地址,通过存储着的这个内存地址就可以找存储的那个数值10,也就是我们常说的变量b指向了a的地址。

在我看来,指针就是这么简单,指针变量其实并没什么多大的不一样,指针仍然是和普通变量一样,都是存储着一个值的地址空间而已,只不过普通变量存储着的是具体的那个值,指针变量存储着的是一个地址而已,只是要通过存储着的那个地址值才能找到最终的那个值而已。就是这么简单,只是可能编程语言本身给指针的读和写设置了很多语法糖。

函数指针/指针函数

函数指针和指针函数   其实也同样的很简单很容易理解,就是看你理解的方式了。正如我在文中标记的一样,您会发现我将两个地方加粗了。对,这就是重点,无论是 函数指针/指针函数,还是数组指针/指针数组,只要找到重点就行,这里的重点就是我标注加粗的地方,也就是后面的两个字才是重点。

函数指针 的重点是指针,也就是说,它是个指针,看下面代码

//定义实现一个sum函数

int sum(int a, int b) {

        return a + b;

}

int main() {

        //定义一个函数指针指向sum函数的地址

        int (*varSumFunc)(int a, int b) = sum;

        return 0;

}

这里的varSumFunc其实就跟前面的int *b一样的,就是一个指针变量,只是这个指针变量指向的是一个函数地址而已,为何是这样子定义一个函数指针,没有原因,就是语法而已,并且这样子定义可以跟指针函数进行区分。

指针函数的重点就是函数,它是一个函数,只是它返回的值是一个指针类型的变量而已,如以下代码

int *test() {

        int a = 10;

        int *b = &a;

        return b;

}

int main(){

        int *t = test();

        return 0;

}

通过上面的代码,相信你一定一目了然了吧,所谓的指针函数 就只是一个返回了一个变量的函数而已。

就是这么简单,容易搞混的主要是由于这两个词太想近了,其实只要你明白了这个东西的重点在哪儿,无论你何时想起这两个东东,你都是明了于心的,对吧!!!

相关文章

  • 走出 函数指针/指针函数 的混淆世界

    相信很多小伙伴跟我一样,曾经或是现在被函数指针/指针函数 这两个名字搞得头昏脑胀,并且总是傻傻分不清楚,即使是之前...

  • 函数和指针

    函数指针: 指向函数的指针(是指针)指针函数:返回值是指针的函数(是函数)

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • 指针

    一. 指针指向的是对象的地址//函数指针:指针指向函数//指针函数:函数返回指针 二.

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C语言基础知识点

    函数指针与回调函数 1、函数指针:函数指针是指向函数的指针变量,以下实例声明了函数指针变量 p,指向函数 max:...

  • NDK启航篇——C语言基础(函数指针)

    昨天介绍了指针类型、空指针、指针运算,今天来写一下函数指针 函数指针 函数指针的定义:函数的返回值类型(函数指针的...

  • C语言基础---函数指针和回调函数

    版权声明:本文为小斑马伟原创文章,转载请注明出处!函数指针:函数指针 是指向函数的指针。指针函数:指针函数 函数...

  • C++:函数指针 & 返回函数指针的函数

    函数指针 & 返回函数指针的函数 一、函数指针的声明和使用 声明一个函数指针,给它赋值并调用它指向的函数 函数指针...

  • Redis

    1.指针函数与函数指针 指针函数本质是指针,其返回值是指针。如 float *fun(); 函数指针,本质是指针。...

网友评论

      本文标题:走出 函数指针/指针函数 的混淆世界

      本文链接:https://www.haomeiwen.com/subject/pnnknctx.html