﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-grace</title><link>http://www.cppblog.com/grace/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 06:49:53 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 06:49:53 GMT</pubDate><ttl>60</ttl><item><title>关于指针初始化</title><link>http://www.cppblog.com/grace/archive/2011/07/24/151754.html</link><dc:creator>grace</dc:creator><author>grace</author><pubDate>Sun, 24 Jul 2011 07:34:00 GMT</pubDate><guid>http://www.cppblog.com/grace/archive/2011/07/24/151754.html</guid><description><![CDATA[<div id="cnblogs_post_body">
<div>1. 例子：</div>
<div>int i, arr[10], *p=arr;</div>
<div>分开来就是：<br />int i;<br />int arr[10];<br />int *p = arr;</div>
<div>&nbsp;</div>
<div><span style="color: #ff0000" color="#ff0000">这里int *p = arr; 相当于：</span></div>
<div><span style="color: #ff0000" color="#ff0000">&nbsp;</span>&nbsp;</div>
<div><span style="color: #ff0000" color="#ff0000">int *p;</span></div>
<div><span style="color: #ff0000" color="#ff0000">p = arr;</span></div>
<div><span style="color: #ff0000" color="#ff0000"></span>&nbsp;</div>
<div><span style="color: #ff0000" color="#ff0000"><span style="color: #000000" color="#000000">也就是说赋值的时候*p只代表它是一个指针变量，而p=arr才是它的赋值语句.</span></span></div>
<div>&nbsp;</div>
<div><span style="color: #ff0000" color="#ff0000"><strong>初始化里面的*号表示这个变量是指针类型int *a,则a是(int *)类型，<br />不在初始化里，*a表示指向的内存单元里存的值</strong></span></div>
<p><span style="color: #ff0000" color="#ff0000">
<div><br /><span style="color: #000000" color="#000000">*p表示数组的第一个元素了,即arr[0];</span></div>
<div>
<div class="cnblogs_Highlighter">
<div class="syntaxhighlighter  objc" id="highlighter_671228">
<div class="bar           ">
<div class="toolbar"><a class="item viewSource" title="view source" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#viewSource" highlighterid="highlighter_671228" commandname="viewSource">view source</a><a class="item printSource" title="print" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#printSource" highlighterid="highlighter_671228" commandname="printSource">print</a><a class="item about" title="?" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#about" highlighterid="highlighter_671228" commandname="about">?</a></div></div>
<div class="lines">
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>01</code></td>
<td class="content"><code class="objc datatypes">int</code> <code class="objc plain">main() </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>02</code></td>
<td class="content"><code class="objc plain">{ </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>03</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">**p; </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>04</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>05</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>06</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc plain">*p = &amp;a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>07</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>08</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc plain">printf(</code><code class="objc string">"%x\n"</code><code class="objc plain">, p); </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>09</code></td>
<td class="content"><code class="objc plain">} </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>10</code></td>
<td class="content"><code class="objc comments">// 断错误 </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>11</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>12</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>13</code></td>
<td class="content"><code class="objc datatypes">int</code> <code class="objc plain">main() </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>14</code></td>
<td class="content"><code class="objc plain">{ </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>15</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">*p; </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>16</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>17</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>18</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc plain">p = &amp;a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>19</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>20</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="objc plain">printf(</code><code class="objc string">"%x\n"</code><code class="objc plain">, p); </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>21</code></td>
<td class="content"><code class="objc plain">} </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>22</code></td>
<td class="content"><code class="objc comments">// 正常</code></td></tr></tbody></table></div></div></div></div></div></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>这个也是我自己编程过程碰到的一个问题</p>
<p>&nbsp;</p>
<div class="cnblogs_Highlighter">
<div class="syntaxhighlighter  objc" id="highlighter_421118">
<div class="bar           ">
<div class="toolbar"><a class="item viewSource" title="view source" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#viewSource" highlighterid="highlighter_421118" commandname="viewSource">view source</a><a class="item printSource" title="print" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#printSource" highlighterid="highlighter_421118" commandname="printSource">print</a><a class="item about" title="?" style="width: 16px; height: 16px" href="http://www.cnblogs.com/herbert/archive/2011/01/14/1935816.html#about" highlighterid="highlighter_421118" commandname="about">?</a></div></div>
<div class="lines">
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>01</code></td>
<td class="content"><code class="objc datatypes">int</code> <code class="objc plain">main() </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>02</code></td>
<td class="content"><code class="objc plain">{ </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>03</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">**p2; </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>04</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">*p1; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>05</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc plain">p2=&amp;p1; </code><code class="objc comments">//p2 如果不指向一个确定的变量的话，直接 *p2 是一个危险的操作，你不知道指向了什么单元 </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>06</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>07</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc comments">//后面的赋值写操作更危险了 </code></td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>08</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>09</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>10</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc datatypes">int</code> <code class="objc plain">a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>11</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>12</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc plain">*p2 = &amp;a; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>13</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>14</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc plain">printf(</code><code class="objc string">"%x\n"</code><code class="objc plain">, p1); </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>15</code></td>
<td class="content"><code class="spaces">&nbsp;</code>&nbsp;</td></tr></tbody></table></div>
<div class="line alt2">
<table>
<tbody>
<tr>
<td class="number"><code>16</code></td>
<td class="content"><code class="spaces">&nbsp;&nbsp;</code><code class="objc keyword">return</code> <code class="objc plain">0; </code></td></tr></tbody></table></div>
<div class="line alt1">
<table>
<tbody>
<tr>
<td class="number"><code>17</code></td>
<td class="content"><code class="objc plain">}</code></td></tr></tbody></table></div></div></div></div>
<p>&nbsp;</p>
<p>指针没有初始化，而直接对其赋值操作，危险<br />另外即使初始化也要初始化个有效的地址，否则也会出错<br /><br />因为**p 是个二维指针，你写 *p = &amp;a;<br />只是给*p初始化，但是没有给**p初始化，所以报错。<br />因为**p 是个二维指针要指向二维的变量</p>
<p>说白了就是 *p 指向一个内存，**p 指向另一个内存，<br />你只给*p 赋值，没有给**p赋值。<br />所以包没有初始化错误</p></div><script type="text/javascript">
if ($ != jQuery) {
	$ = jQuery.noConflict();
}
var isLogined = false;
var cb_blogId = 67547;
var cb_entryId = 1935816;
var cb_blogApp = "herbert";
var cb_blogUserGuid = "7210a246-f62b-df11-ba8f-001cf0cd104b";
var cb_entryCreatedDate = '2011/1/14 17:57:00';
</script><img src ="http://www.cppblog.com/grace/aggbug/151754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/grace/" target="_blank">grace</a> 2011-07-24 15:34 <a href="http://www.cppblog.com/grace/archive/2011/07/24/151754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在实际项目中应注意的事项</title><link>http://www.cppblog.com/grace/archive/2011/07/24/151741.html</link><dc:creator>grace</dc:creator><author>grace</author><pubDate>Sun, 24 Jul 2011 02:50:00 GMT</pubDate><guid>http://www.cppblog.com/grace/archive/2011/07/24/151741.html</guid><description><![CDATA[pInt是一个指针。当判断它指向的地址是否为空时应该写成:if(null==pInt)。<br />因为在实际项目的时候：<br />1.如果规范为pInt==null,有时就会出现pInt=null.这样差错十分难。<br />2.如果规范为null==pInt,有时就会出现null=pInt.这样差错就十分简单了。<br /><img src ="http://www.cppblog.com/grace/aggbug/151741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/grace/" target="_blank">grace</a> 2011-07-24 10:50 <a href="http://www.cppblog.com/grace/archive/2011/07/24/151741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>