<?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/%E5%8A%A8%E6%80%81%E5%86%85%E5%AD%98/</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 22:42:00 +0800</lastBuildDate><atom:link href="http://wuqq547.top/tags/%E5%8A%A8%E6%80%81%E5%86%85%E5%AD%98/index.xml" rel="self" type="application/rss+xml"/><item><title>0030 - 《21天学通C++（第8版）》第八章 100 道选择题：指针与引用强化训练</title><link>http://wuqq547.top/posts/0030-cpp-chapter8-100-mcq-notes/</link><pubDate>Sat, 11 Apr 2026 22:42:00 +0800</pubDate><guid>http://wuqq547.top/posts/0030-cpp-chapter8-100-mcq-notes/</guid><description>&lt;h2 id="一说明">一、说明&lt;/h2>
&lt;p>这篇笔记基于《21天学通 C++（第8版）》第八章“指针和引用”的核心内容整理而成，但题目、解析和拓展说明均为重新组织后的训练材料。&lt;/p>
&lt;p>使用方式很简单：&lt;/p>
&lt;ul>
&lt;li>先独立做题&lt;/li>
&lt;li>每题后面立即对照答案&lt;/li>
&lt;li>顺手看解析&lt;/li>
&lt;li>再把“知识点拓展”当成复盘&lt;/li>
&lt;/ul>
&lt;p>整套题都做完，基本就能把这一章最关键的坑和概念吃透。&lt;/p>
&lt;hr>
&lt;h2 id="二指针基础题1-20">二、指针基础题（1-20）&lt;/h2>
&lt;h3 id="题-1">题 1&lt;/h3>
&lt;p>&lt;strong>题目：&lt;/strong> 指针变量中直接保存的内容是什么？&lt;/p>
&lt;p>A. 变量的类型信息&lt;br>
B. 变量的值&lt;br>
C. 某个对象所在的内存地址&lt;br>
D. 编译器自动生成的标记&lt;/p>
&lt;p>&lt;strong>正确答案：&lt;/strong> C&lt;/p>
&lt;p>&lt;strong>解析：&lt;/strong> 指针本质上是一个保存地址的变量，它不是直接保存目标对象的值，而是保存“这个对象在哪里”。&lt;/p>
&lt;p>&lt;strong>知识点拓展：&lt;/strong> 学指针时一定先分清 &lt;code>ptr&lt;/code> 和 &lt;code>*ptr&lt;/code>。前者通常是地址，后者才是地址处的数据。&lt;/p>
&lt;h3 id="题-2">题 2&lt;/h3>
&lt;p>&lt;strong>题目：&lt;/strong> 下面哪一项最能描述 &lt;code>&amp;amp;age&lt;/code> 的含义？&lt;/p>
&lt;p>A. &lt;code>age&lt;/code> 的值加 1&lt;br>
B. &lt;code>age&lt;/code> 的地址&lt;br>
C. &lt;code>age&lt;/code> 的引用类型&lt;br>
D. &lt;code>age&lt;/code> 的长度&lt;/p>
&lt;p>&lt;strong>正确答案：&lt;/strong> B&lt;/p>
&lt;p>&lt;strong>解析：&lt;/strong> &lt;code>&amp;amp;&lt;/code> 在这里是取地址运算符，表示变量 &lt;code>age&lt;/code> 存放在内存中的位置。&lt;/p>
&lt;p>&lt;strong>知识点拓展：&lt;/strong> 同一个符号 &lt;code>&amp;amp;&lt;/code> 在不同上下文里角色不同。声明引用时它表示“引用”，表达式里它表示“取地址”。&lt;/p>
&lt;h3 id="题-3">题 3&lt;/h3>
&lt;p>&lt;strong>题目：&lt;/strong> 设 &lt;code>int age = 30; int* ptr = &amp;amp;age;&lt;/code>，则 &lt;code>*ptr&lt;/code> 的值是：&lt;/p></description></item><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>