<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Markmap</title> <style> * { margin: 0; padding: 0; } #mindmap { display: block; width: 100vw; height: 100vh; } </style> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets@11.8.0/styles/default.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.15.6/dist/style.css"> </head> <body> <svg id="mindmap"></svg> <script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.15.6/dist/browser/index.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-toolbar@0.15.6/dist/index.js"></script><script>(r => { setTimeout(r); })(() => { const { markmap, mm } = window; const { el } = markmap.Toolbar.create(mm); el.setAttribute('style', 'position:absolute;bottom:20px;right:20px'); document.body.append(el); })</script><script>((getMarkmap, getOptions, root2, jsonOptions) => { const markmap = getMarkmap(); window.mm = markmap.Markmap.create( "svg#mindmap", (getOptions || markmap.deriveOptions)(jsonOptions), root2 ); })(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[0,1]},"content":"函数指针和回调函数","children":[{"type":"heading","depth":1,"payload":{"lines":[1,2]},"content":"函数指针","children":[{"type":"heading","depth":2,"payload":{"lines":[2,3]},"content":"函数指针概括","children":[{"type":"list_item","depth":3,"payload":{"lines":[6,7]},"content":"声明函数指针","children":[]},{"type":"list_item","depth":3,"payload":{"lines":[7,8]},"content":"让函数指针指向函数的地址","children":[]},{"type":"list_item","depth":3,"payload":{"lines":[8,9]},"content":"使用函数指针调用函数","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[9,10]},"content":"声明函数指针","children":[]},{"type":"heading","depth":2,"payload":{"lines":[12,13]},"content":"函数原型","children":[{"type":"fence","depth":3,"content":"<pre><code class=\"language-c\">int func1(int id, string str);\nint func2(int no, string message);\nint func3(int index, string info);\nint funcx(int xxx, string yyy);\n\nbool func5(int idx, string info);\n\nbool func6(int iii);\n</code></pre>\n","children":[],"payload":{"lines":[13,23]}}]}]},{"type":"heading","depth":1,"payload":{"lines":[25,26]},"content":"回调函数","children":[{"type":"heading","depth":2,"payload":{"lines":[26,27]},"content":"回调函数概括","children":[{"type":"fence","depth":3,"content":"<pre><code class=\"language-cpp\">返回类型(*函数名)(参数列表)\n</code></pre>\n","children":[],"payload":{"lines":[30,33]}},{"type":"fence","depth":3,"content":"<pre><code class=\"language-c\">int (*pfa)(int, string); // fun1,fun2,fun3,funx\nbool (*pfb)(int, string); // fun5\nbool (*pfc)(int); // fun6\n</code></pre>\n","children":[],"payload":{"lines":[35,40]}}]},{"type":"heading","depth":2,"payload":{"lines":[41,42]},"content":"简单案例展示一","children":[{"type":"fence","depth":3,"content":"<pre><code class=\"language-c++\"><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include</span> <span class=\"hljs-string\"><iostream></span></span>\n<span class=\"hljs-keyword\">using</span> <span class=\"hljs-keyword\">namespace</span> std;\n\n<span class=\"hljs-function\"><span class=\"hljs-type\">void</span> <span class=\"hljs-title\">func</span><span class=\"hljs-params\">(<span class=\"hljs-type\">int</span> no, string str)</span>\n</span>{\n cout << <span class=\"hljs-string\">"今天是星期"</span> << no << <span class=\"hljs-string\">","</span> << str << endl;\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-type\">int</span> <span class=\"hljs-title\">main</span><span class=\"hljs-params\">()</span>\n</span>{\n <span class=\"hljs-type\">int</span> day1 = <span class=\"hljs-number\">7</span>;\n string str1 = <span class=\"hljs-string\">"还在上班,不开心......"</span>;\n <span class=\"hljs-comment\">// 正常调用函数</span>\n <span class=\"hljs-built_in\">func</span>(day1, str1);\n\n <span class=\"hljs-comment\">// 使用函数指针调用函数</span>\n <span class=\"hljs-built_in\">void</span> (*pfun)(<span class=\"hljs-type\">int</span>, string);\n pfun = func;\n <span class=\"hljs-built_in\">pfun</span>(day1, str1); <span class=\"hljs-comment\">// 直接用函数名调用</span>\n (*pfun)(day1, str1);<span class=\"hljs-comment\">// 使用(*函数名)调用</span>\n}\n</code></pre>\n","children":[],"payload":{"lines":[43,66]}}]},{"type":"heading","depth":2,"payload":{"lines":[67,68]},"content":"效果展示","children":[{"type":"fence","depth":3,"content":"<pre><code class=\"language-terminal\">今天是星期7,还在上班,不开心......\n今天是星期7,还在上班,不开心......\n今天是星期7,还在上班,不开心......\n</code></pre>\n","children":[],"payload":{"lines":[68,73]}}]},{"type":"heading","depth":2,"payload":{"lines":[74,75]},"content":"简单案例展示二","children":[{"type":"fence","depth":3,"content":"<pre><code class=\"language-cpp\"><span class=\"hljs-keyword\">typedef</span> 返回类型(*新类型)(参数列表)\n</code></pre>\n","children":[],"payload":{"lines":[79,82]}},{"type":"fence","depth":3,"content":"<pre><code class=\"language-c++\"><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include</span> <span class=\"hljs-string\"><iostream></span></span>\n<span class=\"hljs-keyword\">using</span> <span class=\"hljs-keyword\">namespace</span> std;\n\n<span class=\"hljs-comment\">// 考生个人发挥函数</span>\n<span class=\"hljs-function\"><span class=\"hljs-type\">void</span> <span class=\"hljs-title\">studentDoing</span><span class=\"hljs-params\">(<span class=\"hljs-type\">int</span> iii)</span>\n</span>{\n <span class=\"hljs-comment\">// 自定义</span>\n cout << <span class=\"hljs-string\">"考生"</span> << iii << <span class=\"hljs-string\">"完成答卷..."</span> << endl;\n}\n\n<span class=\"hljs-comment\">// 监考老师控制考场函数</span>\n<span class=\"hljs-function\"><span class=\"hljs-type\">void</span> <span class=\"hljs-title\">teacher1Doing</span><span class=\"hljs-params\">(<span class=\"hljs-type\">int</span> iii, <span class=\"hljs-type\">int</span> jjj)</span>\n</span>{\n <span class=\"hljs-comment\">// 自定义</span>\n cout << <span class=\"hljs-string\">"监考老师"</span> << iii << <span class=\"hljs-string\">"和"</span> << jjj << <span class=\"hljs-string\">"进行监考..."</span> << endl;\n}\n\n<span class=\"hljs-comment\">// 任课老师批改成绩函数</span>\n<span class=\"hljs-function\"><span class=\"hljs-type\">void</span> <span class=\"hljs-title\">teacher2Doing</span><span class=\"hljs-params\">(string str)</span>\n</span>{\n <span class=\"hljs-comment\">// 自定义</span>\n cout << <span class=\"hljs-string\">"任课老师批改试卷...,"</span> << str << endl;\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">typedef</span> <span class=\"hljs-title\">void</span><span class=\"hljs-params\">(*FUNC_SRUDENT)</span><span class=\"hljs-params\">(<span class=\"hljs-type\">int</span>)</span></span>;\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">typedef</span> <span class=\"hljs-title\">void</span><span class=\"hljs-params\">(*FUNC_TEACHER1)</span><span class=\"hljs-params\">(<span class=\"hljs-type\">int</span>, <span class=\"hljs-type\">int</span>)</span></span>;\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">typedef</span> <span class=\"hljs-title\">void</span><span class=\"hljs-params\">(*FUNC_TEACHER2)</span><span class=\"hljs-params\">(string)</span></span>;\n\n<span class=\"hljs-comment\">// 组织学生考试函数</span>\n<span class=\"hljs-function\"><span class=\"hljs-type\">void</span> <span class=\"hljs-title\">examination</span><span class=\"hljs-params\">(FUNC_SRUDENT p1, FUNC_TEACHER1 p2, FUNC_TEACHER2 p3, <span class=\"hljs-type\">int</span> iii, <span class=\"hljs-type\">int</span> jjj, <span class=\"hljs-type\">int</span> kkk, string str)</span>\n</span>{\n <span class=\"hljs-comment\">// 调用监考老师控制考场函数</span>\n <span class=\"hljs-built_in\">p2</span>(jjj, kkk);\n <span class=\"hljs-comment\">// 调用考生个人发挥函数</span>\n <span class=\"hljs-built_in\">p1</span>(iii);\n <span class=\"hljs-comment\">// 调用任课老师批改成绩函数</span>\n <span class=\"hljs-built_in\">p3</span>(str);\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-type\">int</span> <span class=\"hljs-title\">main</span><span class=\"hljs-params\">()</span>\n</span>{\n cout << <span class=\"hljs-string\">"考试开始"</span> << endl;\n FUNC_SRUDENT _p1;\n FUNC_TEACHER1 _p2;\n FUNC_TEACHER2 _p3;\n _p1 = studentDoing;\n _p2 = teacher1Doing;\n _p3 = teacher2Doing;\n <span class=\"hljs-built_in\">examination</span>(_p1, _p2, _p3, <span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">13</span>, <span class=\"hljs-string\">"改卷子真累啊"</span>);\n <span class=\"hljs-built_in\">examination</span>(_p1, _p2, _p3, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">13</span>, <span class=\"hljs-string\">"改卷子真累啊"</span>);\n <span class=\"hljs-built_in\">examination</span>(_p1, _p2, _p3, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">13</span>, <span class=\"hljs-string\">"终于改完了啊"</span>);\n cout << <span class=\"hljs-string\">"公式成绩"</span> << endl;\n}\n</code></pre>\n","children":[],"payload":{"lines":[84,139]}},{"type":"fence","depth":3,"content":"<pre><code class=\"language-terminal\">考试开始\n监考老师12和13进行监考...\n考生1完成答卷...\n任课老师批改试卷...,改卷子真累啊\n监考老师12和13进行监考...\n考生2完成答卷...\n任课老师批改试卷...,改卷子真累啊\n监考老师12和13进行监考...\n考生3完成答卷...\n任课老师批改试卷...,终于改完了啊\n公式成绩\n</code></pre>\n","children":[],"payload":{"lines":[143,156]}}]}]}]},{})</script> </body> </html>