﻿<?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++博客-技术心得地</title><link>http://www.cppblog.com/haitao/</link><description>把所有简单的事办好即为不简单</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:09:25 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:09:25 GMT</pubDate><ttl>60</ttl><item><title>C 声明规则</title><link>http://www.cppblog.com/haitao/archive/2010/04/13/112457.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Tue, 13 Apr 2010 08:07:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/04/13/112457.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/112457.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/04/13/112457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/112457.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/112457.html</trackback:ping><description><![CDATA[1. 取最左边标识符<br>2. 优先级从高到低：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a. 标识符被括起来的部分<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b. 后缀操作符：()表示函数；[]表示数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c. 前缀操作符：*表示指针<br>3. const/volatile+类型说明符<br>&nbsp;&nbsp;&nbsp; *+const/volatile
<img src ="http://www.cppblog.com/haitao/aggbug/112457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-04-13 16:07 <a href="http://www.cppblog.com/haitao/archive/2010/04/13/112457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GCC AND GDB</title><link>http://www.cppblog.com/haitao/archive/2010/04/11/112274.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Sun, 11 Apr 2010 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/04/11/112274.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/112274.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/04/11/112274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/112274.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/112274.html</trackback:ping><description><![CDATA[

<div>GCC:<br>1. -include stdlib.h<br>2. -c sourcename: only compile<br>3. -o objectname<br>4. -g sourcename: generate debug info<br>5. -ansi<br>6. -w: close all warning<br>7. -S: generate assembly lang<br><br></div><div>GDB:<br>1. break &lt;func / line&gt;<br>2. watch &lt;expr&gt;<br>3. catch &lt;event&gt;<br>4. clear / delete / disable / enable &lt;func / line&gt;<br>5. continue / c<br>6. next / n<br>7. step / s<br>8. finish<br>9. stop / nostop<br>10. print / p<br>11. backtrace / bt &lt;n&gt;: print stack info<br>12. fram / f &lt;n&gt;:&nbsp;<br>13. up / down &lt;n&gt;<br>14. info frame : print detailed stack info<br>15. info args : print current func's para name and value<br>16. info locals : print current func's local name and value<br>17. info catch : print current func's exception<br>18. list / l (set listsize 10)<br>19. search<br>20. examine / x &lt;addr&gt;: x /3uh 0x54320<br><br></div><div><br><br><br><br><br><br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/112274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-04-11 23:26 <a href="http://www.cppblog.com/haitao/archive/2010/04/11/112274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 命令技巧</title><link>http://www.cppblog.com/haitao/archive/2010/04/09/112112.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Fri, 09 Apr 2010 13:41:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/04/09/112112.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/112112.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/04/09/112112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/112112.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/112112.html</trackback:ping><description><![CDATA[

<div>1. 列出目录:<br>ls -d */<br>ls -l|grep ^d<br><br></div><div><br><br></div><div><br></div><img src ="http://www.cppblog.com/haitao/aggbug/112112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-04-09 21:41 <a href="http://www.cppblog.com/haitao/archive/2010/04/09/112112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Debian Console 设置</title><link>http://www.cppblog.com/haitao/archive/2010/04/08/112008.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Thu, 08 Apr 2010 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/04/08/112008.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/112008.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/04/08/112008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/112008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/112008.html</trackback:ping><description><![CDATA[

<div>1. X-Windows / Console 切换命令:<br>Ctrl+Alt+Shift+F2, Alt+F7<br><br></div><div>2. Console 设置分辨率:<br>/boot/grub/menu.list : kernel line: vga=0x341<br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/112008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-04-08 22:28 <a href="http://www.cppblog.com/haitao/archive/2010/04/08/112008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL使用备忘</title><link>http://www.cppblog.com/haitao/archive/2010/03/09/109233.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Mon, 08 Mar 2010 16:18:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/03/09/109233.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/109233.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/03/09/109233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/109233.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/109233.html</trackback:ping><description><![CDATA[<div>1. 安装</div><div>2. 配置<br><br></div><div>3. 数据库操作<br><br>show databases;<br>create database mydatabase;<br>use mydatabase<br><br></div><div>4. 数据表操作<br><br>show tables;<br>create table mytable(column1 varchar(20), column2 char(1), column3 date, column4 date);<br>describe mytable;<br>load data local infile '/path/table.txt' into table mytable;<br>load data local infile '/path/table.txt' into table mytable<br>-&gt;lines terminated by '\r\n';<br>insert into mytable values('value1','v2','2000-01-01',NULL);<br><br></div><div>5.&nbsp;</div><img src ="http://www.cppblog.com/haitao/aggbug/109233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-03-09 00:18 <a href="http://www.cppblog.com/haitao/archive/2010/03/09/109233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>合并二个有序数组</title><link>http://www.cppblog.com/haitao/archive/2010/02/24/108377.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Wed, 24 Feb 2010 14:48:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/02/24/108377.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/108377.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/02/24/108377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/108377.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/108377.html</trackback:ping><description><![CDATA[
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br><br></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;merge(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;la[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lal,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lb[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lbl,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">lc);<br><br></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;la[]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">6</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">8</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">};<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lb[]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">7</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">9</span><span style="color: #000000; ">};<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lc[1</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{</span><span style="color: #000000; ">0</span><span style="color: #000000; ">};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;merge(la,&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,&nbsp;lb,&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">lc);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;1</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,lc[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;merge(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;la[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lal,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lb[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;lbl,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">lc)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;lal&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;lbl)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc[k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;la[i]&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;lb[j]&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;la[i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;:&nbsp;lb[j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;lal)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc[k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;la[i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;lbl)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc[k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;lb[j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div><img src ="http://www.cppblog.com/haitao/aggbug/108377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-02-24 22:48 <a href="http://www.cppblog.com/haitao/archive/2010/02/24/108377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第十章结构和联合</title><link>http://www.cppblog.com/haitao/archive/2010/01/07/105121.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Thu, 07 Jan 2010 14:42:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/01/07/105121.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/105121.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/01/07/105121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/105121.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/105121.html</trackback:ping><description><![CDATA[



<div>1. 聚合类型<br><br>结构和联合<br>结构 : 标量类型(内置类型)<br>struct tag { member-list } var-list;<br><br></div><div>下面是2个不同的结构:<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;c;<br>}&nbsp;x;<br><br></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;c;<br>}&nbsp;y;</span></div><br></div><div>typedef 用法:<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">typedef&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;MyStruct_Tag&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;&nbsp;c;<br>}&nbsp;MyStruct</span></div><br></div><div>直接访问 : &nbsp;结构名.成员名<br>间接访问 : &nbsp;结构指针-&gt;成员名<br><br>不完整声明 : 类似函数声明<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;B;<br><br></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;A&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;B&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">partner;<br>}<br><br></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;B&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;A&nbsp;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">partner;<br>}</span></div><br></div><div>初始化 :&nbsp;<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">typedef&nbsp;</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;&nbsp;c;<br>}&nbsp;Simple;<br><br></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;INIT_EX&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">short</span><span style="color: #000000; ">&nbsp;&nbsp;b[</span><span style="color: #000000; ">6</span><span style="color: #000000; ">];<br>&nbsp;&nbsp;&nbsp;&nbsp;Simple&nbsp;c;<br>}&nbsp;x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,&nbsp;{</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">6</span><span style="color: #000000; ">},&nbsp;{</span><span style="color: #000000; ">12</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">x</span><span style="color: #000000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">6.9</span><span style="color: #000000; ">}&nbsp;};<br></span></div><br></div><div>2. 结构的存储分配<br><br>满足边界对齐要求:<br>结构的起始存储位置必须是结构中边界要求最严格数据类型所要求的位置<br>结构的成员存储位置必须满足各自的存储要求<br><br>求偏移量函数:<br>offsetof ( type, member ); //stddef.h<br><br></div><div>3. 作为函数参数<br><br>值 &nbsp; &nbsp; : 结构的一份拷贝<br>指针 : 地址的一份拷贝<br><br></div><div>4. 位段<br><br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;CHAR&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;&nbsp;ch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">7</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;&nbsp;font&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">6</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;&nbsp;size&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">;<br>}</span></div><br></div><div>5. 联合<br><br>所有成员引用的是内存中的相同位置<br>长度是最长成员的长度<br><br>初始化：必须是联合第一个成员的类型<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">union&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">float</span><span style="color: #000000; ">&nbsp;&nbsp;b;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;c[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">];<br>}&nbsp;x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{&nbsp;</span><span style="color: #000000; ">6</span><span style="color: #000000; ">&nbsp;};</span></div><br></div><img src ="http://www.cppblog.com/haitao/aggbug/105121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-01-07 22:42 <a href="http://www.cppblog.com/haitao/archive/2010/01/07/105121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第九章字符串、字符和字节</title><link>http://www.cppblog.com/haitao/archive/2010/01/05/104792.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Mon, 04 Jan 2010 17:32:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2010/01/05/104792.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/104792.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2010/01/05/104792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/104792.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/104792.html</trackback:ping><description><![CDATA[


<div>1. 字符串<br><br>包括零个或多个字符<br>以 0 即 '\0'字节结尾<br>字符串长度不包括 NULL<br>包括在头文件 string.h 中<br><br></div><div>2. strlen<br><br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">size_t<br>strlen(&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;length;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(&nbsp;length&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;&nbsp;length</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;length;<br>}</span></div><br>注意事项: 返回值为无符号整数. 禁止使用 if( strlen(x) - strlen(y) &gt;= 0 )...<br><br></div><div>3. 不受限制的字符串函数<br><br>使用这些函数时, 程序员必须保证结果字符串不会溢出这块内存<br><br>char<span class="Apple-tab-span" style="white-space:pre">	</span>*strcpy( char *dst,<span class="Apple-tab-span" style="white-space:pre">	</span>char const *src );<span class="Apple-tab-span" style="white-space:pre">		</span>//dst将会被修改, 不能使用字符串常量; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;dst, src不能重叠<br>char<span class="Apple-tab-span" style="white-space:pre">	</span>*strcat(&nbsp;char *dst,<span class="Apple-tab-span" style="white-space: pre; ">	</span>char const *src );<span class="Apple-tab-span" style="white-space: pre; ">		</span>//dst不能为NULL; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;dst, src不能重叠<br>char<span class="Apple-tab-span" style="white-space:pre">	</span>*strcmp(&nbsp;char const *s1,<span class="Apple-tab-span" style="white-space: pre; ">	</span>char const *s2 );<span class="Apple-tab-span" style="white-space: pre; ">	</span>//<br><br></div><div>4. 长度受限的字符串函数<br><br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strncpy( char *dst,<span class="Apple-tab-span" style="white-space: pre; ">	</span>char const *src, size_t len );<span class="Apple-tab-span" style="white-space: pre; ">		</span>//strlen(src) &gt; len, dst将用NUL填充到len长度, 但 strlen(dst) 不变<br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strncat(&nbsp;char *dst,<span class="Apple-tab-span" style="white-space: pre; ">	</span>char const *src, size_t len&nbsp;);<span class="Apple-tab-span" style="white-space: pre; ">		</span>//总是在结果字符串后面添加NUL字节, 但 strlen(dst) 不变<br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strncmp(&nbsp;char const *s1,<span class="Apple-tab-span" style="white-space: pre; ">	</span>char const *s2, size_t len&nbsp;);<span class="Apple-tab-span" style="white-space: pre; ">	</span>//<br><br></div><div>5. 字符串查找<br><br>char<span class="Apple-tab-span" style="white-space:pre">	</span>*strchr( char const *str, int ch );<span class="Apple-tab-span" style="white-space:pre">		</span>//查找ch第一次(最左边)出现位置<br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strrchr( char const *str, int ch );<span class="Apple-tab-span" style="white-space:pre">		</span>//查找ch最后一次(最右边)出现位置<br><br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strstr( char const *s1, char const *s2 );<span class="Apple-tab-span" style="white-space:pre">	</span>//查找s2第一次出现的位置<br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strtok( char *str, char const *sep );<span class="Apple-tab-span" style="white-space: pre; ">		</span>//原理是将sep用NULL替换<br><br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>&nbsp;&nbsp; &nbsp; &nbsp;*strpbrk( char const *str, char const *group );<span class="Apple-tab-span" style="white-space:pre">		</span>//查找 str 中的字符第一次在字符串中出现的位置, 返回指针<br>size_t<span class="Apple-tab-span" style="white-space:pre">	</span>strcspn( char const *str, char const *group );<span class="Apple-tab-span" style="white-space: pre; ">		</span>//查找 str 中的字符第一次在字符串中出现的位置, 返回索引<br>size_t<span class="Apple-tab-span" style="white-space: pre; ">	</span>strspn( char const *str, char const *group );<span class="Apple-tab-span" style="white-space:pre">		</span>//查找 str 中的字符第一次不在字符串中出现的位置, 返回索引<br><br></div><div>6. 错误信息<br><br>char<span class="Apple-tab-span" style="white-space: pre; ">	</span>*strerror( int error_number );<span class="Apple-tab-span" style="white-space:pre">		</span>//<br><br></div><div>7. 字符操作<br><br>字符分类：int islower(int ch)<br>字符转换：int tolower( int ch )<br><br></div><div>8. 内存操作<br><br>字符串数据内部包括 0 时，用下面函数操作<br><br>void<span class="Apple-tab-span" style="white-space:pre">	</span>*memcpy( void *dst, void const *src, size_t length );<br>void<span class="Apple-tab-span" style="white-space: pre; ">	</span>*memmove( void *dst, void const *src, size_t length );<br>void<span class="Apple-tab-span" style="white-space: pre; ">	</span>*memcmp( void *dst, void const *src, size_t length );<br>void<span class="Apple-tab-span" style="white-space: pre; ">	</span>*memchr( void *dst, void const *src, size_t length );<br>void<span class="Apple-tab-span" style="white-space: pre; ">	</span>*memset( void *dst, void const *src, size_t length );<br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/104792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2010-01-05 01:32 <a href="http://www.cppblog.com/haitao/archive/2010/01/05/104792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第八章数组</title><link>http://www.cppblog.com/haitao/archive/2009/12/30/104500.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Wed, 30 Dec 2009 15:30:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/30/104500.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/104500.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/30/104500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/104500.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/104500.html</trackback:ping><description><![CDATA[


<div>1. 一维数组<br><br>数组名的值是一个指针常量<br>只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量<br><br>int array[9];<br>sizeof(array) :<span class="Apple-tab-span" style="white-space:pre">	</span>数组 a 的大小9，不是指针的长度<br>&amp;array &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;:<span class="Apple-tab-span" style="white-space:pre">	</span>指向数组的指针，不是某个整型数的指针<br>6[array]<span class="Apple-tab-span" style="white-space:pre">	</span>&nbsp;&nbsp; &nbsp;:<span class="Apple-tab-span" style="white-space:pre">	</span>与array[6]相等；*(6+array)<br><br></div><div>2. 字符串复制<br><br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">void</span><span style="color: #000000; "><br>strcpy(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">buffer,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(&nbsp;(</span><span style="color: #000000; ">*</span><span style="color: #000000; ">buffer</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br>}</span></div><br></div><div>3. 数组和指针<br><br>int strlen( char *string );<br>int strlen( char string[] );<br><br></div><div>4. 初始化<br><br>静态数组自动初始化<br>初始化用 {}<br>字符数组初始化<br>char message[] = { 'H', 'e', 'l', 'l', 'o', 0};<br>char message[] = "Hello";<br><br></div><div>5. 多维数组<br><br>下标引用只是间接访问表达式的一种伪装形式<br>int<span class="Apple-tab-span" style="white-space:pre">	</span>matrix[3][10];<br>int<span class="Apple-tab-span" style="white-space:pre">	</span>(*p)[10] = matrix;<br>matrix[1][5]<span class="Apple-tab-span" style="white-space:pre">	</span>=<span class="Apple-tab-span" style="white-space:pre">	</span>*(&nbsp;*( matrix +1 ) +5 )<br><br>matrix是一个指向数组的指针<br><br></div><div>6. 指针数组<br><br>int<span class="Apple-tab-span" style="white-space:pre">	</span>*api[10];<br>char const *keyword[] = {"do", "for", "return", NULL};<br>sizeof(keyword) / sizeof(keyword[0]) &nbsp;:<span class="Apple-tab-span" style="white-space:pre">	</span>元素个数<br><br><span style="font-size: 13px; "><span style="color: rgb(0, 0, 0); "><font color="#0000FF"><font color="#000000"><span style="font-size: medium;"><font color="#0000FF" size="3"><span style="font-size: 13px;"><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br><br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "><br>lookup_keyword(&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;desired_word,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">keyword_table[],&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;size&nbsp;)<br>{<br>&nbsp;&nbsp; &nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">**</span><span style="color: #000000; ">kwp;<br>&nbsp;&nbsp; &nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(&nbsp;kwp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;keyword_table;&nbsp;kwp&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;keyword_table</span><span style="color: #000000; ">+</span><span style="color: #000000; ">size; kwp</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(strcmp(desired_word,&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">kwp)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;kwp&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;keyword_table;<br>&nbsp;&nbsp; &nbsp; retrun&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>}</span></div><br>改进：<span style="color: rgb(0, 0, 255); ">for</span><span style="color: rgb(0, 0, 0); ">(&nbsp;kwp&nbsp;</span><span style="color: rgb(0, 0, 0); ">=</span><span style="color: rgb(0, 0, 0); ">&nbsp;keyword_table; *kwp != NULL;</span><span style="color: rgb(0, 0, 0); ">&nbsp;kwp</span><span style="color: rgb(0, 0, 0); ">++</span><span style="color: rgb(0, 0, 0); ">)<br><span style="font-size: medium;"><font size="3"><span style="font-size: 13px;"><br></span></font></span></span></span></font></span></font></font></span></span></div><img src ="http://www.cppblog.com/haitao/aggbug/104500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-30 23:30 <a href="http://www.cppblog.com/haitao/archive/2009/12/30/104500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Debian 常用命令集锦</title><link>http://www.cppblog.com/haitao/archive/2009/12/23/103861.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Wed, 23 Dec 2009 15:30:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/23/103861.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103861.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/23/103861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103861.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103861.html</trackback:ping><description><![CDATA[


<div>1. apt-get:&nbsp;提供了一个用于下载和安装软件包的简易命令行界面<br><br>&nbsp;&nbsp;&nbsp;apt-get install|remove&nbsp;&lt;package&gt;<br>&nbsp;&nbsp; apt-get update:&nbsp;取回更新的软件包列表信息<br>&nbsp;&nbsp; apt-get upgrade:&nbsp;进行一次升级<br>&nbsp;&nbsp; apt-get clean:&nbsp;删除所有已下载的包<br>&nbsp;&nbsp; apt-get autoclean:&nbsp;删除老版本的已下载的包<br>&nbsp;&nbsp; apt-get check:&nbsp;核对以确认系统的依赖关系的完整性<br>&nbsp;&nbsp; apt-get -h: 获取帮助信息<br><br></div><div>2. apt-cache:&nbsp;&nbsp;是一个底层的工具，我们用它来操纵 APT 的二进制缓存文件，也用来在那些文件中查询相关信息<br><br>&nbsp;&nbsp; apt-cache add 文件: 往源缓存加入一个软件包文件<br>&nbsp;&nbsp; apt-cache showpkg &lt;package&gt;:&nbsp;显示某个软件包的全面信息<br>&nbsp;&nbsp; apt-cache showsrc &lt;package&gt;: 显示源文件的各项记录<br>&nbsp;&nbsp; apt-cache search 表达式: 根据正则表达式搜索软件包列表<br>&nbsp;&nbsp; apt-cache -h:&nbsp;获取帮助信息<br><br></div><div>3. dpkg: 是一个底层的工具，像是APT，被用于从远程获取软件包以及处理复杂的软件包关系<br><br>&nbsp;&nbsp; dpkg -i|--install &lt;package.deb&gt;: 安装deb格式软件<br>&nbsp;&nbsp;&nbsp;dpkg -r|--remove &lt;pachage&gt;: 删除该软件包<br>&nbsp;&nbsp;&nbsp;dpkg&nbsp;-P|--purge&nbsp;&lt;package&gt;: 完全删除该软件包<br>&nbsp;&nbsp; dpkg --configure&nbsp;&lt;package&gt;:&nbsp;重新配制一个已经安装的包<br>&nbsp;&nbsp; dpkg -h|--help:&nbsp;获取帮助信息<br><br></div><div><br></div><img src ="http://www.cppblog.com/haitao/aggbug/103861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-23 23:30 <a href="http://www.cppblog.com/haitao/archive/2009/12/23/103861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第七章函数</title><link>http://www.cppblog.com/haitao/archive/2009/12/21/103655.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Mon, 21 Dec 2009 15:02:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/21/103655.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103655.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/21/103655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103655.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103655.html</trackback:ping><description><![CDATA[




<div>1. 函数定义<br><br>存根 (stub) 目的<br>真函数 : 函数具有返回值<br><br></div><div>2. 函数声明<br><br>函数原型 : function prototype<br>当程序调用一个无法见到原型的函数时, 编译器便认为该函数返回一个整型<br><br></div><div>3. 函数的参数<br><br>C 函数的所有参数均以"传值调用"方式进行传递<br>缺省参数提升 default argument promotion : char, short &gt; int;<span class="Apple-tab-span" style="white-space:pre">	</span>float &gt; double<br>使用函数原型的函数不会执行缺省参数提升<br><br></div><div>4. ADT和黑盒<br><br>ADT : abstract data type<br><br></div><div>5. 递归<br><br>C 通过运行时堆栈支持递归函数的实现<br>尾部递归很容易改为循环形式<br><br></div><div>6. 可变参数列表<br><br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdarg.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br>va_list&nbsp;&nbsp;&nbsp;&nbsp;value;<br>va_start(&nbsp;value,&nbsp;input);<br></span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;input;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;va_arg(&nbsp;value,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">);<br>}<br>va_end(&nbsp;value&nbsp;);<br><br></span></div>注：不允许一开始就访问参数列表中间的参数，允许中途中止<br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/103655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-21 23:02 <a href="http://www.cppblog.com/haitao/archive/2009/12/21/103655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第六章指针</title><link>http://www.cppblog.com/haitao/archive/2009/12/19/103552.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Sat, 19 Dec 2009 15:49:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/19/103552.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103552.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/19/103552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103552.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103552.html</trackback:ping><description><![CDATA[



<div>1. 内存和指针<br><br>边界对齐 ：整型值存储的起始位置只能是某些特定的字节，通常是 2 的倍数<br>变量名字和内存位置之间的关联并不是硬件所提供的，它是由编译器实现的<br>硬件通过地址访问内存位置<br><br></div><div>2. 值和类型<br><br>不能简单的通过检查一个值的位来判断它的类型，而是值的使用方式<br><br></div><div>3. 指针<br><br>NULL指针<br><br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;ch&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">a</span><span style="color: #000000; ">'</span><span style="color: #000000; ">;<br></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">cp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">ch;<br></span></div>*cp + 1<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>b<br>*(cp +1)<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a 的相邻内存单元的值<br>&nbsp;&nbsp; cp++<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a 的相邻内存单元的地址<br>&nbsp;&nbsp;++cp<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a 的地址<br><br>*++cp<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a 的相邻内存单元的值<br>*cp++<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a (产生cp的拷贝；cp增加；通过cp拷贝执行间接访问)<br><br>++*cp<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>b, <span class="Apple-tab-span" style="white-space:pre">	</span>ch = 'a';<br>(*cp)++<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>a,<span class="Apple-tab-span" style="white-space:pre">	</span>ch = 'b';<br><br>++*++cp<span class="Apple-tab-span" style="white-space: pre; ">	</span>:<span class="Apple-tab-span" style="white-space: pre; ">	</span>a 的相邻内存单元的值+1<br>++*cp++<span class="Apple-tab-span" style="white-space: pre; ">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>b<br><br></div><div>实例<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">int</span><span style="color: #000000; "><br>strlen(&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;length;<br>}<br><br></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "><br>find_char(&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">**</span><span style="color: #000000; ">strings,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;value)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(&nbsp;(&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">strings</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;NULL&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\0</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;value&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br>}</span></div><br></div><img src ="http://www.cppblog.com/haitao/aggbug/103552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-19 23:49 <a href="http://www.cppblog.com/haitao/archive/2009/12/19/103552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第五章操作符和表达式</title><link>http://www.cppblog.com/haitao/archive/2009/12/18/103492.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Fri, 18 Dec 2009 13:54:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/18/103492.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103492.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/18/103492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103492.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103492.html</trackback:ping><description><![CDATA[

<div>1. 算数操作符<br><br>加, 减, 乘, 除 : 整型值盒浮点数值<br>取模(%) : 整型值<br><br></div><div>2. 二进制操作符<br><br>移位操作符:<span class="Apple-tab-span" style="white-space:pre">	</span>&lt;&lt;(左移位) <span class="Apple-tab-span" style="white-space:pre">	</span>&gt;&gt;(右移位)<span class="Apple-tab-span" style="white-space:pre">	</span>:&nbsp;整型值<br>位操作符:<span class="Apple-tab-span" style="white-space:pre">	</span>&amp;(与)<span class="Apple-tab-span" style="white-space:pre">	</span>|(或)<span class="Apple-tab-span" style="white-space:pre">	</span>&nbsp;&nbsp; &nbsp;^(异或)<span class="Apple-tab-span" style="white-space:pre">	</span>:&nbsp;整型值<br><br></div><div>3. 赋值操作符<br><br>+=<span class="Apple-tab-span" style="white-space:pre">		</span>-=<span class="Apple-tab-span" style="white-space:pre">		</span>*=<span class="Apple-tab-span" style="white-space:pre">	</span><span class="Apple-tab-span" style="white-space:pre">	</span>/=<span class="Apple-tab-span" style="white-space:pre">		</span>%=<br>&lt;&lt;=<span class="Apple-tab-span" style="white-space:pre">		</span>&gt;&gt;=<span class="Apple-tab-span" style="white-space:pre">		</span>&amp;=<span class="Apple-tab-span" style="white-space:pre">		</span>|=<span class="Apple-tab-span" style="white-space:pre">		</span>^=<br><br></div><div>4. 单目操作符<br><br>!(逻辑非)<span class="Apple-tab-span" style="white-space:pre">		</span>~(位取反)<span class="Apple-tab-span" style="white-space:pre">	</span>-(负值)<span class="Apple-tab-span" style="white-space:pre">	</span>+(正值)<br>++<span class="Apple-tab-span" style="white-space:pre">			</span>--<br>&amp;(取地址)<span class="Apple-tab-span" style="white-space:pre">	</span>*(间接寻址)<br>sizeof<br>(cast)<br><br></div><div>5. 关系操作符<br><br>&gt;<span class="Apple-tab-span" style="white-space:pre">	</span>&gt;=<span class="Apple-tab-span" style="white-space:pre">	</span>&lt;<span class="Apple-tab-span" style="white-space:pre">	</span>&lt;=<span class="Apple-tab-span" style="white-space:pre">	</span>!=<span class="Apple-tab-span" style="white-space:pre">	</span>==<br>&amp;&amp;<span class="Apple-tab-span" style="white-space:pre">		</span>||<span class="Apple-tab-span" style="white-space:pre">	</span>: <span class="Apple-tab-span" style="white-space:pre">	</span>短路性质<br><br></div><div>4. 条件操作符<br><br>? :<br><br></div><div>5. 左值和右值<br><br>左值：内存的一个位置<br>右值：一个值<br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/103492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-18 21:54 <a href="http://www.cppblog.com/haitao/archive/2009/12/18/103492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第四章语句</title><link>http://www.cppblog.com/haitao/archive/2009/12/17/103425.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Thu, 17 Dec 2009 13:22:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/17/103425.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103425.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/17/103425.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103425.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103425.html</trackback:ping><description><![CDATA[


<div><span style="font-family: Verdana; font-size: 13px; line-height: 18px; ">1. 表达式语句<br><br>副作用 (side effect) 的意义<br><br></span></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;">2. if 语句<br><br>C 不具备布尔变量,而是用整型来代替<br>else 子句从属于最靠近它的不完整的 if 语句<br><br></span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;">3. switch 语句<br><br>case 标签必须具有一个唯一的值 : 常量表达式<br>case 标签只是确定语句列表的进入点<br><br>下面代码 : 对字符, 单词, 行计数<br><div style="border-left-color: rgb(204, 204, 204); padding-bottom: 4px; background-color: rgb(238, 238, 238); padding-left: 4px; width: 437px; padding-right: 5px; height: 145px; font-size: 13px; word-break: break-all; padding-top: 4px; "><span style="line-height: 15px; color: rgb(0, 0, 255); ">switch</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">(&nbsp;ch&nbsp;){<br></span><span style="line-height: 15px; color: rgb(0, 0, 255); ">case</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">\n</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">+=</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">1</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">;<br></span><span style="line-height: 15px; color: rgb(0, 0, 255); ">case</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">:<br></span><span style="line-height: 15px; color: rgb(0, 0, 255); ">case</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">\t</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">'</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;words&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">+=</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">1</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">;<br></span><span style="line-height: 15px; color: rgb(0, 0, 255); ">default</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chars&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">+=</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">1</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">;<br>}</span></div></span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;"><br>4. goto 语句<br><br>包含 goto 标签的语句可以出现在同一个函数中的任何位置<br>要想立刻从深层嵌套的循环中退出只有使用 goto 语句<br><div style="border-left-color: rgb(204, 204, 204); padding-bottom: 4px; background-color: rgb(238, 238, 238); padding-left: 4px; width: 444px; padding-right: 5px; height: 145px; font-size: 13px; word-break: break-all; padding-top: 4px; "><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 255); ">while</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">(&nbsp;condition1&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 255); ">while</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">(&nbsp;condition2&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 255); ">while</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">(&nbsp;condition3&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 255); ">if</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">(&nbsp;condition4&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="line-height: 15px; color: rgb(0, 0, 255); ">goto</span><span style="line-height: 15px; color: rgb(0, 0, 0); ">&nbsp;quit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>quit:&nbsp;;</span></div></span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;"><br></span></font></div><img src ="http://www.cppblog.com/haitao/aggbug/103425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-17 21:22 <a href="http://www.cppblog.com/haitao/archive/2009/12/17/103425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第三章数据</title><link>http://www.cppblog.com/haitao/archive/2009/12/16/103360.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Wed, 16 Dec 2009 15:42:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/16/103360.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103360.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/16/103360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103360.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103360.html</trackback:ping><description><![CDATA[



<div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">1. 基本数据<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">char<span class="Apple-tab-span" style="white-space:pre">		</span>signed char<span class="Apple-tab-span" style="white-space:pre">	</span>unsigned char<br><span class="Apple-tab-span" style="white-space:pre">		</span>short int<span class="Apple-tab-span" style="white-space:pre">		</span>unsigned short (int)<br><span class="Apple-tab-span" style="white-space:pre">		</span>int<span class="Apple-tab-span" style="white-space:pre">			</span>unsigned (int)<br><span class="Apple-tab-span" style="white-space:pre">		</span>long int<span class="Apple-tab-span" style="white-space:pre">		</span>unsigned long (int)<br>float<span class="Apple-tab-span" style="white-space:pre">		</span>double<span class="Apple-tab-span" style="white-space:pre">		</span>long double<br><br>整型字面值<span class="Apple-tab-span" style="white-space:pre">	</span>0173<span class="Apple-tab-span" style="white-space:pre">	</span>0x7b<br>字符常量<span class="Apple-tab-span" style="white-space:pre">	</span>'M'<span class="Apple-tab-span" style="white-space:pre">		</span>'\n'<br>宽字节常量<span class="Apple-tab-span" style="white-space:pre">	</span>L'X'<span class="Apple-tab-span" style="white-space:pre">		</span>L'e^'<br><br>空字符串常量<span class="Apple-tab-span" style="white-space:pre">	</span>"" : 只有NULL终止符<br>字符串常量的直接值是一个指针<span class="Apple-tab-span" style="white-space:pre">	</span>char *ptr = "Hello World!"<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">2. 基本声明<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">操作符 * : 间接访问操作，只对指针变量才是合法的<br><br>下面写法等价：<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">message;<br>message&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Hello&nbsp;World!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br><br></span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">message&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Hello&nbsp;World!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;</span></div><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">隐式声明：<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000; ">f(&nbsp;x&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;x&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br>}</span></div>缺少返回类型，编译器默认返回整型<br>参数 x 没有类型名，同样默认为整型<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">typedef : 为数据类型定义新名字<br>#define<span class="Apple-tab-span" style="white-space:pre">	</span>d_ptr_to_char<span class="Apple-tab-span" style="white-space:pre">	</span>char *<span class="Apple-tab-span" style="white-space:pre">	</span>(不可取)<br>typedef<span class="Apple-tab-span" style="white-space:pre">	</span>char<span class="Apple-tab-span" style="white-space:pre">	</span>*d_ptr_to_char;<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">3. 常量<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">int<span class="Apple-tab-span" style="white-space:pre">	</span>const<span class="Apple-tab-span" style="white-space:pre">	</span>a;<br>const<span class="Apple-tab-span" style="white-space:pre">	</span>int<span class="Apple-tab-span" style="white-space:pre">	</span>a;<br><br>int<span class="Apple-tab-span" style="white-space:pre">	</span>const<span class="Apple-tab-span" style="white-space:pre">	</span>*ptr;<br>int<span class="Apple-tab-span" style="white-space:pre">	</span>* const<span class="Apple-tab-span" style="white-space:pre">	</span>ptr<br>int<span class="Apple-tab-span" style="white-space:pre">	</span>const<span class="Apple-tab-span" style="white-space:pre">	</span>* const<span class="Apple-tab-span" style="white-space:pre">	</span>ptr;<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">4. 作用域<br><br>文件作用域<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>全局变量<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>static<br>函数作用域<br>代码块作用域&nbsp;:<span class="Apple-tab-span" style="white-space:pre">	</span>局部变量<br>原型作用域<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">5. 链接属性<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">external<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>全局，具有 external 链接属性的实体总是具有 static 存储类型<br>internal<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>static extern<br>none<span class="Apple-tab-span" style="white-space:pre">		</span>:<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">6. 存储类型<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">auto<span class="Apple-tab-span" style="white-space:pre">		</span>:<span class="Apple-tab-span" style="white-space:pre">	</span><br>static<span class="Apple-tab-span" style="white-space:pre">		</span>:<span class="Apple-tab-span" style="white-space:pre">	</span>不能修饰函数形参，全局, 初始化为0<br>register<span class="Apple-tab-span" style="white-space:pre">	</span>:<span class="Apple-tab-span" style="white-space:pre">	</span><br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">7. static<br><br></span></div><div><span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">static 用于函数定义或局部变量时，改变标识符链接属性 external 为 internal<br>static 用于代码块内部变量声明时，改变变量的存储类型 auto 为 static<br><br></span></div><img src ="http://www.cppblog.com/haitao/aggbug/103360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-16 23:42 <a href="http://www.cppblog.com/haitao/archive/2009/12/16/103360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第一章快速上手</title><link>http://www.cppblog.com/haitao/archive/2009/12/15/103287.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Tue, 15 Dec 2009 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/15/103287.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103287.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/15/103287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103287.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103287.html</trackback:ping><description><![CDATA[





<div>1 空白和注释<br><br></div><div>注释不要嵌套<br>如果需要删除代码，最好用下面方法：<br><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #0000FF; ">#if</span><span style="color: #000000; ">&nbsp;0</span><span style="color: #000000; "><br>&nbsp;&nbsp;&nbsp;&nbsp;statements<br></span><span style="color: #0000FF; ">#endif</span></div><div style="background-color: rgb(238, 238, 238); font-size: 13px; border-left-color: rgb(204, 204, 204); padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #0000FF; "><br></span></div></div><div><br>2 预处理指令 preprocessor directives<br><br></div><div>如果一些声明需要用于几个不同的源文件，可以把这些声明编写一个单独的文件<br><br></div><div>3 函数<br><br></div><div>所有传递给函数的参数都是按值传递的<br><br>gets(input) : 从标准读入一行文本，存入到给定的数组中，丢弃\n，插入\0，返回非NULL表示成功读取<br>puts("hello") : 把指定字符串写到标准输出，并在末尾添上\n<br>getchar() : 从标准读取一个字符并返回该值，无输入时返回常量EOF<br>putchar() : 非格式化输出<br>scanf("%d %c %s", &amp;integer, &amp;char, &amp;string) : 格式化输入，空白符作为分隔符<br>printf("%d %o %x %g %c %s", input1, input2, input3, float4, char5, string6) : 格式化输出<br><br></div><div>int<br>read_column_number( int columns[], int max )&nbsp;未指定数组长度，数组长度为单独参数<br><br></div><div>字符只是小整数，用一个整数容纳字符不会引起任何问题<br><br></div><img src ="http://www.cppblog.com/haitao/aggbug/103287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-15 22:29 <a href="http://www.cppblog.com/haitao/archive/2009/12/15/103287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[POINTERS ON C] 第二章基本概念</title><link>http://www.cppblog.com/haitao/archive/2009/12/15/103220.html</link><dc:creator>海涛</dc:creator><author>海涛</author><pubDate>Mon, 14 Dec 2009 16:47:00 GMT</pubDate><guid>http://www.cppblog.com/haitao/archive/2009/12/15/103220.html</guid><wfw:comment>http://www.cppblog.com/haitao/comments/103220.html</wfw:comment><comments>http://www.cppblog.com/haitao/archive/2009/12/15/103220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/haitao/comments/commentRss/103220.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/haitao/services/trackbacks/103220.html</trackback:ping><description><![CDATA[



<div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;">1. 环境</span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;"><br>分为翻译环境 translation environment 和执行环境 execution environment<br><br>translation = compiler (obj) + linker (exe)<br><br>compiler = preprocessor (text operation) + parse (warning, error, obj) + optimizer (efficient)<br><div style="padding-right: 32px; padding-left: 32px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); padding-bottom: 32px; border-left-color: rgb(187, 187, 187); padding-top: 32px; ">cc&nbsp;main.c : 编译并链接一个源文件<br>cc main.c program.c : 编译并链接多个源文件<br>cc main.o program.c : 编译一个源文件，并把已有目标文件连接在一起<br><br>cc -c main.c : 编译源文件，并产生一个目标文件<br>cc -c main.c program.c : 编译多个源文件，并为每个文件产生一个目标文件<br>cc main.o program.o : 链接多个目标文件</div><br>execution = load (init stack var) + start (running stack) + stop (return/exit)<br><div style="padding-right: 32px; padding-left: 32px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); padding-bottom: 32px; border-left-color: rgb(187, 187, 187); padding-top: 32px; ">load : 存储在stack中尚未初始化的变量将在此时得到初始值<br>start : 程序使用一个running stack，存储函数的局部变量和返回地址</div></span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;">2. 规则</span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;"><br><div>换行符可以是一串字符，但当作单个字符处理<br>空白字符：空格，水平制表符，垂直制表符，格式反馈符，换行符<br>三字母词：??(<br>转义序列：\? &nbsp;\" &nbsp;\' &nbsp;\\ &nbsp;\a &nbsp;\b &nbsp;\f &nbsp;\n &nbsp;\r &nbsp;\t &nbsp;\v &nbsp;\ddd &nbsp;\xddd<br><br></div><div>注释：被预处理器替换为一个空格<br>可以出现在任何空格可以出现的地方<br><br></div><div>规则：相邻的标记之间必须出现一至多个空白字符<br>y=x+1;<br>y = x + 1;<br>y = x<br>+<br>1;<br><br></div><div>大小写字母，数字，下划线组成<br>区分大小写<br>长度无限制，标准忽略掉第31个字符以后的字符<br>允许编译器对于表示外部名字的标识符进行限制：只识别前六位，不区分大小写<br><br></div></span></font></div><div><font face="Verdana" size="3"><span style="font-size: 13px; line-height: 18px;">3. 程序风格</span></font></div><img src ="http://www.cppblog.com/haitao/aggbug/103220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/haitao/" target="_blank">海涛</a> 2009-12-15 00:47 <a href="http://www.cppblog.com/haitao/archive/2009/12/15/103220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>