<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>读书笔记 on wuqq 的 Blog</title><link>http://wuqq547.top/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/</link><description>Recent content in 读书笔记 on wuqq 的 Blog</description><image><title>wuqq 的 Blog</title><url>http://wuqq547.top/cover.png</url><link>http://wuqq547.top/cover.png</link></image><generator>Hugo -- 0.147.4</generator><language>zh-cn</language><lastBuildDate>Sat, 11 Apr 2026 21:42:00 +0800</lastBuildDate><atom:link href="http://wuqq547.top/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>0029 - 《21天学通C++（第8版）》第八章笔记：指针、引用与动态内存</title><link>http://wuqq547.top/posts/0029-cpp-pointers-and-references-chapter8-notes/</link><pubDate>Sat, 11 Apr 2026 21:42:00 +0800</pubDate><guid>http://wuqq547.top/posts/0029-cpp-pointers-and-references-chapter8-notes/</guid><description>&lt;h2 id="一这一章在讲什么">一、这一章在讲什么&lt;/h2>
&lt;p>这一章的主题非常集中：&lt;strong>指针、引用、动态内存分配&lt;/strong>。&lt;/p>
&lt;p>如果说前几章主要是在建立 C++ 的语法直觉，那么这一章开始真正进入 C++ 的底层能力区。它回答的是几个核心问题：&lt;/p>
&lt;ul>
&lt;li>变量在内存里到底怎么放&lt;/li>
&lt;li>地址为什么能被“保存起来”&lt;/li>
&lt;li>为什么 &lt;code>new&lt;/code> / &lt;code>delete&lt;/code> 容易写出 bug&lt;/li>
&lt;li>引用和指针到底有什么区别&lt;/li>
&lt;li>函数传参时，什么时候该传值，什么时候该传引用，什么时候才该传指针&lt;/li>
&lt;/ul>
&lt;p>这章读完之后，最大的收获不是会写几个 &lt;code>*&lt;/code> 和 &lt;code>&amp;amp;&lt;/code>，而是会开始把程序看成“值 + 地址 + 生命周期”的组合。&lt;/p>
&lt;hr>
&lt;h2 id="二指针的本质">二、指针的本质&lt;/h2>
&lt;h3 id="21-指针不是特殊魔法它本质上也是变量">2.1 指针不是“特殊魔法”，它本质上也是变量&lt;/h3>
&lt;p>指针本质上就是一个变量，只不过它保存的不是普通数据，而是&lt;strong>内存地址&lt;/strong>。&lt;/p>
&lt;p>例如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> age &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">30&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span>&lt;span style="color:#f92672">*&lt;/span> ptr &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;amp;&lt;/span>age;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这里发生了三件事：&lt;/p>
&lt;ul>
&lt;li>&lt;code>age&lt;/code> 是一个普通整数变量&lt;/li>
&lt;li>&lt;code>&amp;amp;age&lt;/code> 取出 &lt;code>age&lt;/code> 所在的内存地址&lt;/li>
&lt;li>&lt;code>ptr&lt;/code> 把这个地址保存起来&lt;/li>
&lt;/ul>
&lt;p>所以可以把指针理解成：&lt;/p>
&lt;blockquote>
&lt;p>“一个知道另一个对象住在哪里的变量”&lt;/p>&lt;/blockquote>
&lt;h3 id="22--和--分别干什么">2.2 &lt;code>&amp;amp;&lt;/code> 和 &lt;code>*&lt;/code> 分别干什么&lt;/h3>
&lt;ul>
&lt;li>&lt;code>&amp;amp;&lt;/code> 是取地址运算符&lt;/li>
&lt;li>&lt;code>*&lt;/code> 在“定义时”表示声明指针，在“使用时”表示解引用&lt;/li>
&lt;/ul>
&lt;p>看一个最小例子：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> age &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">30&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span>&lt;span style="color:#f92672">*&lt;/span> ptr &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;amp;&lt;/span>age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cout &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span> ptr &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span> endl; &lt;span style="color:#75715e">// 输出地址
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>cout &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span> &lt;span style="color:#f92672">*&lt;/span>ptr &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span> endl; &lt;span style="color:#75715e">// 输出地址处存的值，即 30
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这里一定要分清：&lt;/p></description></item></channel></rss>