<!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\">&lt;iostream&gt;</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 &lt;&lt; <span class=\"hljs-string\">&quot;今天是星期&quot;</span> &lt;&lt; no &lt;&lt; <span class=\"hljs-string\">&quot;,&quot;</span> &lt;&lt; str &lt;&lt; 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\">&quot;还在上班,不开心......&quot;</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\">&lt;iostream&gt;</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 &lt;&lt; <span class=\"hljs-string\">&quot;考生&quot;</span> &lt;&lt; iii &lt;&lt; <span class=\"hljs-string\">&quot;完成答卷...&quot;</span> &lt;&lt; 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 &lt;&lt; <span class=\"hljs-string\">&quot;监考老师&quot;</span> &lt;&lt; iii &lt;&lt; <span class=\"hljs-string\">&quot;和&quot;</span> &lt;&lt; jjj &lt;&lt; <span class=\"hljs-string\">&quot;进行监考...&quot;</span> &lt;&lt; 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 &lt;&lt; <span class=\"hljs-string\">&quot;任课老师批改试卷...,&quot;</span> &lt;&lt; str &lt;&lt; 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 &lt;&lt; <span class=\"hljs-string\">&quot;考试开始&quot;</span> &lt;&lt; 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\">&quot;改卷子真累啊&quot;</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\">&quot;改卷子真累啊&quot;</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\">&quot;终于改完了啊&quot;</span>);\n    cout &lt;&lt; <span class=\"hljs-string\">&quot;公式成绩&quot;</span> &lt;&lt; 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>