这节课到底在补什么缺口
函数指针是 C/C++ 里一个「看着明白、用着发懵」的知识点。很多学习者能说出「函数指针就是指向函数的指针」这句话,但真到写代码时,要么不知道怎么声明,要么搞不清楚什么时候该用、什么时候不该用。这门课就是冲着这个缺口去的:它用「二维数组传参」做前置铺垫,再用「函数指针概念」「函数指针强化」分两步把你从语法认识推到实际使用。二维数组那一节看似和函数指针无关,其实是补两个前提:一是指针和数组在参数传递时的退化规则,二是多维数组在内存中的真实布局。这两个前提不牢,函数指针的声明和调用很容易变成死记硬背。
这门课解决的核心问题有三个:第一,函数指针的声明语法为什么那么别扭,如何读、如何写;第二,函数指针拿到之后怎么用,尤其是作为参数传给另一个函数时,回调机制到底是怎么走通的;第三,const 在函数指针场景里怎么配合——虽然目录里没单列 const 小节,但从课程标题里「const 实战」几个字能看出,这部分会在函数签名、参数限定上反复出现。它解决的不是「让你知道函数指针存在」,而是「让你在需要回调、需要把行为作为参数传递时,能自己写出来而不是去网上抄」。对于要备考或者在读源码的人,这一步绕不过去。
适合什么基础,建议先看哪几块
这门课不适合完全零基础的人直接上手。它假定你至少写过五十行以上的 C/C++ 小程序,知道变量的声明、函数的基本写法,最好对一维数组和一级指针的关系有模糊印象——哪怕不牢固,只要听过「数组名是首地址」这句话,就够用了。如果你连指针的取地址和间接访问都还没做过,建议先把指针基础那部分补完再回来,否则二维数组那一节会直接把你劝退。
具体到观看顺序,建议别按目录顺序走。先看「二维数组」这一节,但只看到你明白「二维数组名是什么类型」「为什么 int arr[3][4] 不能直接传给 int* p」就停下。接着立刻跳到「函数指针概念」,这是整门课的中间段,也是核心。函数指针的声明、初始化、通过指针调用函数,这三件事必须在这里弄透。看完之后再回去看「数组名作为参数」,你会发现它讲的是函数形参列表里那些看起来像数组、实际上是指针的写法——理解了这一层,你再回头看函数指针的形参声明,就不会觉得它是一堆星号和括号的排列组合了。最后再看「函数指针强化」,这一节会把前面所有东西串在一起,通常会涉及回调函数的完整示例。如果你时间紧,优先保「函数指针概念」和「数组名作为参数」,这两个是主干。
学完能独立做什么,资料怎么配合练
学完这门课,你应该能独立完成三件事。第一,自己写出函数指针的声明并能读懂复杂声明,比如返回指针的函数和指向函数的指针在写法上到底差在哪里。第二,把一个函数当作参数传给另一个函数,实现简单的回调机制,比如自己写一个排序函数,接受一个比较函数指针来升降序切换,不用现成的 sort 封装。第三,在阅读开源代码或做笔试题目时,能识别出函数指针写法和直接调用写法之间的等价关系,不会因为看到一段回调代码就卡住。这就是这门课的实际产出,不高也不低,正好是中级开发者应该有的底子。
配套资料的使用方式只有一条原则:先看完一节,关掉视频,自己在编辑器里把代码重写一遍,然后改几个变量名、换一种参数类型,再跑一遍。具体建议分三步。第一步,跟着「函数指针概念」那一节,把视频里的示例代码全部手敲一遍,
课程目录
1 二维数组 (19:17) 2 函数指针概念 (34:49) 3 数组名作为参数 (26:07) 4 函数指针强化 (19:33)





