﻿<?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++博客-Welcome to Leon's Blog</title><link>http://www.cppblog.com/Leon916/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 09 Jan 2009 12:08:02 GMT</lastBuildDate><pubDate>Fri, 09 Jan 2009 12:08:02 GMT</pubDate><ttl>60</ttl><item><title>lcc阅读一</title><link>http://www.cppblog.com/Leon916/archive/2008/12/26/70401.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Fri, 26 Dec 2008 06:37:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/12/26/70401.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/70401.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/12/26/70401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/70401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/70401.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 这个星期开始学习编译原理，找了本书，是关于lcc编译器的书，已经看到第五章了，但是这五章的内容对我来说简直跟地狱一样，都不好理解。<br>&nbsp;&nbsp; 最容易的是第二章，是关于内存管理，到完之后感觉跟STL的内存管理有点相似，都是把自己管理分配的内存，当需要的内存不够用的时候，在调用malloc重新申请。<br>&nbsp;&nbsp; 对于后面几章，还没有彻底理解，还需要花一些时间，边读代码边看书，一定要理解它是如何管理符号、标识符和连接前端和后端的接口。<br><br>&nbsp;&nbsp; 鼓励一下自己，第一次读这么复杂的东西，但是这是成长的必由之路，加油！<br><br><img src ="http://www.cppblog.com/Leon916/aggbug/70401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-12-26 14:37 <a href="http://www.cppblog.com/Leon916/archive/2008/12/26/70401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>std:string学习</title><link>http://www.cppblog.com/Leon916/archive/2008/12/05/68694.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Fri, 05 Dec 2008 14:33:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/12/05/68694.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/68694.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/12/05/68694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/68694.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/68694.html</trackback:ping><description><![CDATA[<p>之所以抛弃char*的字符串而选用C++标准程序库中的string类，是因为他和前者比较起来，不必担心内存是否足够、字符串长度等等，而且作
为一个类出现，他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作，== 进行比较，+
做串联（是不是很简单?）。我们尽可以把它看成是C++的基本数据类型。<br>&nbsp; &nbsp;好了，进入正题&#8230;&#8230;&#8230;<br>首先，为了在我们的程序中使用string类型，我们必须包含头文件 <string></string>。如下：<br>&nbsp; &nbsp;#include <string></string>//注意这里不是string.h string.h是C字符串头文件<br><br>1．声明一个C++字符串<br>声明一个字符串变量很简单：<br>&nbsp; &nbsp;string Str;<br>这样我们就声明了一个字符串变量，但既然是一个类，就有构造函数和析构函数。上面的声明没有传入参数，所以就直接使用了string的默认的构造函数，这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下：<br>a) &nbsp; &nbsp;string s; &nbsp;//生成一个空字符串s<br>b) &nbsp; &nbsp;string s(str) //拷贝构造函数 生成str的复制品<br>c) &nbsp; &nbsp;string s(str,stridx) //将字符串str内&#8220;始于位置stridx&#8221;的部分当作字符串的初值<br>d) &nbsp; &nbsp;string s(str,stridx,strlen) //将字符串str内&#8220;始于stridx且长度顶多strlen&#8221;的部分作为字符串的初值<br>e) &nbsp; &nbsp;string s(cstr) //将C字符串作为s的初值<br>f) &nbsp; &nbsp;string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。<br>g) &nbsp; &nbsp;string s(num,c) //生成一个字符串，包含num个c字符<br>h) &nbsp; &nbsp;string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值<br>i) &nbsp; &nbsp;s.~string() //销毁所有字符，释放内存<br>都很简单，我就不解释了。<br>2．字符串操作函数<br>&nbsp; &nbsp;这里是C++字符串的重点，我先把各种操作函数罗列出来，不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数，再到后面看他的详细解释。<br>a) =,assign() &nbsp; //赋以新值<br>b) swap() &nbsp; //交换两个字符串的内容<br>c) +=,append(),push_back() //在尾部添加字符<br>d) insert() //插入字符<br>e) erase() //删除字符<br>f) clear() //删除全部字符 <br>g) replace() //替换字符<br>h) + //串联字符串<br>i) ==,!=,&lt;,&lt;=,&gt;,&gt;=,compare() &nbsp;//比较字符串<br>j) size(),length() &nbsp;//返回字符数量<br>k) max_size() //返回字符的可能最大个数<br>l) empty() &nbsp;//判断字符串是否为空<br>m) capacity() //返回重新分配之前的字符容量<br>n) reserve() //保留一定量内存以容纳一定数量的字符<br>o) [ ], at() //存取单一字符<br>p) &gt;&gt;,getline() //从stream读取某值<br>q) &lt;&lt; &nbsp;//将谋值写入stream<br>r) copy() //将某值赋值为一个C_string<br>s) c_str() //将内容以C_string返回<br>t) data() //将内容以字符数组形式返回<br>u) substr() //返回某个子字符串<br>v)查找函数<br>w)begin() end() //提供类似STL的迭代器支持<br>x) rbegin() rend() //逆向迭代器<br>y) get_allocator() //返回配置器<br>下面详细介绍：<br>2．1 C++字符串和C字符串的转换<br>&nbsp;
&nbsp;C++提供的由C++字符串得到对应的C_string的方法是使用data()、c_str()和copy()，其中，data()以字符数组的形式
返回字符串内容，但并不添加&#8217;\0&#8217;。c_str()返回一个以&#8216;\0&#8217;结尾的字符数组，而copy()则把字符串的内容复制或写入既有的
c_string或字符数组内。C++字符串并不以&#8217;\0&#8217;结尾。我的建议是在程序中能使用C++字符串就使用，除非万不得已不选用c_string。由
于只是简单介绍，详细介绍掠过，谁想进一步了解使用中的注意事项可以给我留言(到我的收件箱)。我详细解释。<br>2．2 大小和容量函数<br>&nbsp;
&nbsp;一个C++字符串存在三种大小：a)现有的字符数，函数是size()和length()，他们等效。Empty()用来检查字符串是否为空。
b)max_size()
这个大小是指当前C++字符串最多能包含的字符数，很可能和机器本身的限制或者字符串所在位置连续内存的大小有关系。我们一般情况下不用关心他，应该大小
足够我们用的。但是不够用的话，会抛出length_error异常c)capacity()重新分配内存之前
string所能包含的最大字符数。这里另一个需要指出的是reserve()函数，这个函数为string重新分配内存。重新分配的大小由其参数决定，
默认参数为0，这时候会对string进行非强制性缩减。<br><br>还有必要再重复一下C++字符串和C字符串转换的问题，许多人会遇到这样的问
题，自己做的程序要调用别人的函数、类什么的（比如数据库连接函数Connect(char*,char*)），但别人的函数参数用的是char*形式
的，而我们知道，c_str()、data()返回的字符数组由该字符串拥有，所以是一种const
char*,要想作为上面提及的函数的参数，还必须拷贝到一个char*,而我们的原则是能不使用C字符串就不使用。那么，这时候我们的处理方式是：如果
此函数对参数(也就是char*)的内容不修改的话，我们可以这样Connect((char*)UserID.c_str(),
(char*)PassWD.c_str()),但是这时候是存在危险的，因为这样转换后的字符串其实是可以修改的（有兴趣地可以自己试一试），所以我强
调除非函数调用的时候不对参数进行修改，否则必须拷贝到一个char*上去。当然，更稳妥的办法是无论什么情况都拷贝到一个char*上去。同时我们也祈
祷现在仍然使用C字符串进行编程的高手们（说他们是高手一点儿也不为过，也许在我们还穿开裆裤的时候他们就开始编程了，哈哈&#8230;）写的函数都比较规范，那样
我们就不必进行强制转换了。<br><br>2．3元素存取<br>&nbsp;
&nbsp;我们可以使用下标操作符[]和函数at()对元素包含的字符进行访问。但是应该注意的是操作符[]并不检查索引是否有效（有效索引
0~str.length()），如果索引失效，会引起未定义的行为。而at()会检查，如果使用at()的时候索引无效，会抛出
out_of_range异常。<br>&nbsp; &nbsp;有一个例外不得不说，const string a;的操作符[]对索引值是a.length()仍然有效，其返回值是&#8217;\0&#8217;。其他的各种情况，a.length()索引都是无效的。举例如下：<br>const string Cstr(&#8220;const string&#8221;);<br>string Str(&#8220;string&#8221;);<br><br>Str[3]; &nbsp; &nbsp;//ok<br>Str.at(3); &nbsp;//ok<br><br>Str[100]; //未定义的行为<br>Str.at(100); &nbsp;//throw out_of_range<br><br>Str[Str.length()] &nbsp;//未定义行为<br>Cstr[Cstr.length()] //返回 &#8216;\0&#8217;<br>Str.at(Str.length());//throw out_of_range<br>Cstr.at(Cstr.length()) ////throw out_of_range<br><br>我不赞成类似于下面的引用或指针赋值：<br>char&amp; r=s[2];<br>char* p= &amp;s[3];<br>因为一旦发生重新分配，r,p立即失效。避免的方法就是不使用。<br><br>2．4比较函数<br>&nbsp;
&nbsp;C++字符串支持常见的比较操作符（&gt;,&gt;=,&lt;,&lt;=,==,!=），甚至支持string与C-string的比较(如
str&lt;&#8221;hello&#8221;)。在使用&gt;,&gt;=,&lt;,&lt;=这些操作符的时候是根据&#8220;当前字符特性&#8221;将字符按字典顺序进行逐一得
比较。字典排序靠前的字符小，比较的顺序是从前向后比较，遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。同
时，string(&#8220;aaaa&#8221;) &nbsp;
&nbsp;另一个功能强大的比较函数是成员函数compare()。他支持多参数处理，支持用索引值和长度定位子串来进行比较。他返回一个整数来表示比较结果，返
回值意义如下：0-相等 〉0-大于 &lt;0-小于。举例如下：<br>&nbsp; &nbsp;string s(&#8220;abcd&#8221;);<br>&nbsp; &nbsp;<br>&nbsp; &nbsp;s.compare(&#8220;abcd&#8221;); //返回0<br>&nbsp; &nbsp;s.compare(&#8220;dcba&#8221;); //返回一个小于0的值<br>&nbsp; &nbsp;s.compare(&#8220;ab&#8221;); //返回大于0的值<br>&nbsp; &nbsp;<br>s.compare(s); //相等<br>&nbsp; &nbsp;s.compare(0,2,s,2,2); //用&#8221;ab&#8221;和&#8221;cd&#8221;进行比较 小于零<br>&nbsp; &nbsp;s.compare(1,2,&#8221;bcx&#8221;,2); //用&#8221;bc&#8221;和&#8221;bc&#8221;比较。<br>怎么样？功能够全的吧！什么？还不能满足你的胃口？好吧，那等着，后面有更个性化的比较算法。先给个提示，使用的是STL的比较算法。什么？对STL一窍不通？靠，你重修吧！<br><br>2．5 更改内容<br>这在字符串的操作中占了很大一部分。<br>首先讲赋值，第一个赋值方法当然是使用操作符=，新值可以是string(如：s=ns) 、c_string(如：s=&#8221;gaint&#8221;)甚至单一字符（如：s=&#8217;j&#8217;）。还可以使用成员函数assign()，这个成员函数可以使你更灵活的对字符串赋值。还是举例说明吧：<br>s.assign(str); //不说<br>s.assign(str,1,3);//如果str是&#8221;iamangel&#8221; 就是把&#8221;ama&#8221;赋给字符串<br>s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s<br>s.assign(&#8220;gaint&#8221;); //不说<br>s.assign(&#8220;nico&#8221;,5);//把&#8217;n&#8217; &#8216;I&#8217; &#8216;c&#8217; &#8216;o&#8217; &#8216;\0&#8217;赋给字符串<br>s.assign(5,&#8217;x&#8217;);//把五个x赋给字符串<br>把字符串清空的方法有三个：s=&#8221;&#8221;;s.clear();s.erase();(我越来越觉得举例比说话让别人容易懂！)。<br>string提供了很多函数用于插入（insert）、删除（erase）、替换（replace）、增加字符。<br>先说增加字符（这里说的增加是在尾巴上），函数有 +=、append()、push_back()。举例如下：<br>s+=str;//加个字符串<br>s+=&#8221;my name is jiayp&#8221;;//加个C字符串<br>s+=&#8217;a&#8217;;//加个字符<br><br>s.append(str);<br>s.append(str,1,3);//不解释了 同前面的函数参数assign的解释<br>s.append(str,2,string::npos)//不解释了<br><br>s.append(&#8220;my name is jiayp&#8221;);<br>s.append(&#8220;nico&#8221;,5);<br>s.append(5,&#8217;x&#8217;);</p>
<p>&nbsp;</p>
&nbsp;&nbsp;&nbsp; 字符串操作是一个不小的主题,在标准C++中,string字符串类成为一个标准,<span id="txtObj_0">之所以抛弃char*的字符串而选用C++标准程序库中的string类，是因为他和前者比较起来，不必担心内存是否足够、字符串长度等等，而且作为一个类出现，他集成的操作函数足以完成我们大多数情况下的需要.<br>&nbsp;&nbsp;&nbsp; 下面我们首先从一些示例开始学习下string类的使用.<br>1)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s("hehe");<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>2)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; char chs[] = "hehe";<br>&nbsp;&nbsp;&nbsp; string s(chs);<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>3)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; char chs[] = "hehe";<br>&nbsp;&nbsp;&nbsp; string s(chs,1,3);&nbsp;&nbsp;&nbsp; //指定从chs的索引1开始,最后复制3个字节<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>4)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s1("hehe");<br>&nbsp;&nbsp;&nbsp; string s2(s1);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s2&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>5)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s1("hehe",2,3);<br>&nbsp;&nbsp;&nbsp; string s2(s1);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s2&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>6)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; char chs[] = "hehe";<br>&nbsp;&nbsp;&nbsp; string s(chs,3);&nbsp;&nbsp;&nbsp; //将chs前3个字符作为初值构造<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>7)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s(10,'k');&nbsp;&nbsp;&nbsp; //分配10个字符,初值都是'k'<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>//以上是string类实例的构造手段,都很简单.<br><br>9)<br>//赋新值<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s(10,'k');&nbsp;&nbsp;&nbsp; //分配10个字符,初值都是'k'<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s = "hehehehe";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.assign("kdje");<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.assign("fkdhfkdfd",5);&nbsp;&nbsp;&nbsp; //重新分配指定字符串的前5的元素内容<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>10)<br>//swap方法交换<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s1 = "hehe";<br>&nbsp;&nbsp;&nbsp; string s2 = "gagaga";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s1 : "&lt;&lt;s1&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s2 : "&lt;&lt;s2&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s1.swap(s2);<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s1 : "&lt;&lt;s1&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"s2 : "&lt;&lt;s2&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>11)<br>//+=,append(),push_back()在尾部添加字符<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "hehe";<br>&nbsp;&nbsp;&nbsp; s += "gaga";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.append("嘿嘿");&nbsp;&nbsp;&nbsp; //append()方法可以添加字符串<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.push_back('k');&nbsp;&nbsp;&nbsp; //push_back()方法只能添加一个字符...<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>12)<br>//insert() 插入字符.其实,insert运用好,与其他的插入操作是一样的.<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "hehe";<br>&nbsp;&nbsp;&nbsp; s.insert(0,"头部");&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //在头部插入<br>&nbsp;&nbsp;&nbsp; s.insert(s.size(),"尾部");&nbsp;&nbsp;&nbsp; //在尾部插入<br>&nbsp;&nbsp;&nbsp; s.insert(s.size()/2,"中间");//在中间插入<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>13)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg";<br>&nbsp;&nbsp;&nbsp; s.erase(0,1);&nbsp;&nbsp;&nbsp; //从索引0到索引1,即删除掉了'a'<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; //其实,还可以使用replace方法来执行删除操作<br>&nbsp;&nbsp;&nbsp; s.replace(2,3,"");//即将指定范围内的字符替换成"",即变相删除了<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br><br>14)<br>//clear() 删除全部字符<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.length()&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.clear();<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.length()&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; //使用earse方法变相全删除<br>&nbsp;&nbsp;&nbsp; s = "dkjfd";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.length()&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; s.erase(0,s.length());<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.length()&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>15)<br>//replace() 替换字符<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg";<br>&nbsp;&nbsp;&nbsp; s.replace(2,3,"!!!!!");//从索引2开始3个字节的字符全替换成"!!!!!"<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>16)<br>//==,!=,&lt;,&lt;=,&gt;,&gt;=,compare()&nbsp; 比较字符串<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s1 = "abcdefg";<br>&nbsp;&nbsp;&nbsp; string s2 = "abcdefg";&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (s1==s2)cout&lt;&lt;"s1 == s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else cout&lt;&lt;"s1 != s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (s1!=s2)cout&lt;&lt;"s1 != s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else cout&lt;&lt;"s1 == s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (s1&gt;s2)cout&lt;&lt;"s1 &gt; s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else cout&lt;&lt;"s1 &lt;= s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (s1&lt;=s2)cout&lt;&lt;"s1 &lt;= s2"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else cout&lt;&lt;"s1 &gt; s2"&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>17)<br>//size(),length()&nbsp; 返回字符数量<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.size()&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.length()&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>18)<br>//max_size() 返回字符的可能最大个数<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg";<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;s.max_size()&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>19)<br>//empty()&nbsp; 判断字符串是否为空<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s ;<br>&nbsp;&nbsp;&nbsp; if (s.empty())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"s 为空."&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"s 不为空."&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; s = s + "abcdefg";<br>&nbsp;&nbsp;&nbsp; if (s.empty())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"s 为空."&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"s 不为空."&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>20)<br>// [ ], at() 存取单一字符<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg1111";<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"use []:"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; for(int i=0; i&lt;s.length(); i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;s[i]&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"use at():"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; for(int i=0; i&lt;s.length(); i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;s.at(i)&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>21)<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg1111";<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; const char * chs1 = s.c_str();<br>&nbsp;&nbsp;&nbsp; const char * chs2 = s.data();<br><br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"use at():"&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; for(i=0; i&lt;s.length(); i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"c_str() : "&lt;&lt;chs1[i]&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;"data() : "&lt;&lt;chs2[i]&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"c_str() : "&lt;&lt;chs1&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"data() : "&lt;&lt;chs2&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>22)<br>// substr() 返回某个子字符串<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg1111";<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; string str = s.substr(5,3);//从索引5开始3个字节<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;str&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>23)<br>// find 查找函数<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg1111";<br>&nbsp;&nbsp;&nbsp; string pattern = "fg";<br>&nbsp;&nbsp;&nbsp; string::size_type pos;<br>&nbsp;&nbsp;&nbsp; pos = s.find(pattern,0);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //从索引0开始,查找符合字符串"f"的头索引<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;pos&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; string str = s.substr(pos,pattern.size());<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;str&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br>24)<br>// begin() end() 提供类似STL的迭代器支持<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br><br>void main()<br>{<br>&nbsp;&nbsp;&nbsp; string s = "abcdefg1111";<br>&nbsp;&nbsp;&nbsp; for(string::iterator iter = s.begin(); iter!=s.end(); iter++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout&lt;&lt;*iter&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp; cin.get();<br>}<br></span><span id="txtObj_0">&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; 一个C++字符串存在三种大小：a)现有的字符数，函数是size()和length()，他们等效。
Empty()用来检查字符串是否为空。b)max_size()
这个大小是指当前C++字符串最多能包含的字符数，很可能和机器本身的限制或者字符串所在位置连续内存的大小有关系。我们一般情况下不用关心他，应该大小
足够我们用的。但是不够用的话，会抛出length_error异常c)capacity()重新分配内存之前
string所能包含的最大字符数。这里另一个需要指出的是reserve()函数，这个函数为string重新分配内存。重新分配的大小由其参数决定，
默认参数为0，这时候会对string进行非强制性缩减</span><img src ="http://www.cppblog.com/Leon916/aggbug/68694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-12-05 22:33 <a href="http://www.cppblog.com/Leon916/archive/2008/12/05/68694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>std::Vector学习</title><link>http://www.cppblog.com/Leon916/archive/2008/12/05/68638.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Fri, 05 Dec 2008 05:21:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/12/05/68638.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/68638.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/12/05/68638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/68638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/68638.html</trackback:ping><description><![CDATA[vector &lt;int&gt; vNew(v);(v是一个vector &lt;int&gt;) <br> 按上面的语法，创建一个vector，是按照v的<span style="color: #ff0000;">实际元素个数</span>创建新vector的。就是说，如果v中元素是1,2,3,那么，vNew中的元素是1,2,3，并且，vNew的<span style="color: #ff0000;">总容量</span>也是3. <br> 也就是：<span style="color: #ff0000;">vNew的总容量取决于v的实际元素个数。</span> <br>  <br> pVec-&gt;clear();  <br> clear()只是删除[first,last)区间中的所有元素，但并不释放其内存。 <br>  <br> (std::vector&nbsp;  &lt;int &gt;)(*pVec) <br> 也就是创建一个临时对象vector &lt;int&gt;，显然，这个临时对象的总容量是取决于*pVec的实际元素个数的，而经过 <br> pVec-&gt;clear();的pVect的实际元素个数是0，因此，pVec- &gt;swap( (std::vector&nbsp;  &lt;int &gt;)(*pVec) ); 将这个临时对象与pVec交换后，它的总容量变成了0。 <br> （vector中的swap()实现的是：将first、last,end_of_storage（总容量）依次交换）。 <br>  <br> 因此，实现了*pVec没使用内存的释放。 <img src ="http://www.cppblog.com/Leon916/aggbug/68638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-12-05 13:21 <a href="http://www.cppblog.com/Leon916/archive/2008/12/05/68638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔试题2</title><link>http://www.cppblog.com/Leon916/archive/2008/10/28/65277.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Tue, 28 Oct 2008 00:54:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/10/28/65277.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/65277.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/10/28/65277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/65277.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/65277.html</trackback:ping><description><![CDATA[char *p;<br>cout &lt;&lt; sizeof*(p) &lt;&lt; endl;<br>请问这个的输出？<br><br>经过调试，我发现sizeof＊（ｐ）的值是ｐ类型所占的字节数。<br>char输出为1，double：8.<br><br><br>char x[0];<br>x是什么类型？<br>我在VS2005下调试，结果是错误&nbsp; cannot allocate an array of constant size 0&nbsp;。<br>
<img src ="http://www.cppblog.com/Leon916/aggbug/65277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-10-28 08:54 <a href="http://www.cppblog.com/Leon916/archive/2008/10/28/65277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sizeof 用法总结（转）</title><link>http://www.cppblog.com/Leon916/archive/2008/10/27/65250.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Mon, 27 Oct 2008 14:10:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/10/27/65250.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/65250.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/10/27/65250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/65250.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/65250.html</trackback:ping><description><![CDATA[sizeof()功能：计算数据空间的字节数<br>1.与strlen()比较<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strlen()计算字符数组的字符数，以"\0"为结束判断。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而sizeof计算数据（包括数组、变量、类型、结构体等）所占内存空间，用字节数表示<br>2.指针与静态数组的sizeof操作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：int *p; sizeof(p)=4;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但sizeof(*p)相当于sizeof(int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于静态数组，sizeof可直接计算数组大小；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例：int a[10];char b[]="hello";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(a)等于10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(b)等于7;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：数组做型参时，数组名称当作指针使用！！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp; fun(char p[])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{sizeof(p)等于4}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br><span class=tpccontent1><font size=3><font face="Times New Roman"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">&nbsp; 经典问题：</span>&nbsp;</font></font></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><font size=3><font face="Times New Roman"><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double* (*a)[3][6];</span>&nbsp;<br><br></font></font><font size=3><font face="Times New Roman"><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;sizeof(a)&lt;&lt;endl; // 4</span>&nbsp;<br><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;sizeof(*a)&lt;&lt;endl; // 72</span>&nbsp;<br><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;sizeof(**a)&lt;&lt;endl; // 24</span>&nbsp;<br><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;sizeof(***a)&lt;&lt;endl; // 4</span>&nbsp;<br><span class=tpccontent1><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>cout&lt;&lt;sizeof(****a)&lt;&lt;endl; // 8</span>&nbsp;<br><br><span class=tpccontent1><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>a</span></font></font></span><font size=3><font face="Times New Roman"><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是一个很奇怪的定义，他表示一个指向</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double*[3][6]</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型数组的指针。既然是指针，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof(a)</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">就是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span>&nbsp;</span></font></font><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><span class=tpccontent1><font face="Times New Roman" size=3><span class=tpccontent1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></span><font size=3><font face="Times New Roman"><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">既然</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是执行</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double*[3][6]</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型的指针，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">*a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">就表示一个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double*[3][6]</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的多维数组类型，因此</span></span></font></font><font size=3><font face="Times New Roman"><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof(*a)<br>&nbsp;&nbsp;&nbsp;&nbsp; =3*6*sizeof(double*)=72</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。同样的，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">**a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">表示一个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double*[6]</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型的数组，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof(**a)=6*sizeof&nbsp; (double*)=24</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">***a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">就表示其中的一个元素，也就是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double*</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">了，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof(***a)=4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。至于</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">****a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，就是一个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">了，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof(****a)=sizeof(double)=8</span></span></font></font><span class=tpccontent1><font size=3><font face="Times New Roman"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span>&nbsp;<br></font></font></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><font face="Times New Roman" size=3>3.格式的写法<br>&nbsp;&nbsp;&nbsp;sizeof操作符，对变量或对象可以不加括号，但若是类型，须加括号<br>4</font><font face="Times New Roman" size=3>.使用sizeof时string的注意事项<br>&nbsp;&nbsp;&nbsp;string s="hello";<br>&nbsp;&nbsp;&nbsp;sizeof(s)等于string类的大小，sizeof(s.c_str())得到的是与字符串长度。<br>5.union 与struct的空间计算<br>&nbsp;&nbsp;&nbsp;总体上遵循两个原则：<br>&nbsp;&nbsp;&nbsp;(1)整体空间是 </font><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana"><font face="Times New Roman" size=3>占用空间最大的成员（的类型）所占字节数的整倍数<br>&nbsp;&nbsp; (2)数据对齐原则----内存按结构成员的 先后顺序排列，当排到该成员变量时，其前面已摆放的空间大小必须是该成员类型大小的整倍数，如果不够则补齐，以此向后类推。。。。。<br>&nbsp;&nbsp; 注意：数组按照单个变量一个一个的摆放，而不是看成整体。如果成员中有自定义的类、结构体，也要注意数组问题。<br>例：[引用其他帖子的内容]<br><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">因为对齐问题使结构体的</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">sizeof</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">变得比较复杂，看下面的例子：</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">(</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">默认对齐方式下</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">)</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><span class=tpccontent1>struct s1</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>char a;</span><br><span class=tpccontent1>double b;</span><br><span class=tpccontent1>int c;</span><br><span class=tpccontent1>char d; </span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>struct s2</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>char a;</span><br><span class=tpccontent1>char b;</span><br><span class=tpccontent1>int c;</span><br><span class=tpccontent1>double d;</span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>cout&lt;&lt;sizeof(s1)&lt;&lt;endl; // 24</span><br><span class=tpccontent1>cout&lt;&lt;sizeof(s2)&lt;&lt;endl; // 16</span><br><br><span class=tpccontent1>&nbsp; </span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">同样是两个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">char</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型，一个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">int</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型，一个</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型，但是因为对界问题，导致他们的大小不同。计算结构体大小可以采用元素摆放法，我举例子说明一下：首先，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">CPU</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">判断结构体的对界，根据上一节的结论，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界都取最大的元素类型，也就是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型的对界</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。然后开始摆放每个元素。</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><span class=tpccontent1>&nbsp; </span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对于</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，首先把</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">放到</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界，假定是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">0</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，此时下一个空闲的地址是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，但是下一个元素</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类型，要放到</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界上，离</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">最接近的地址是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">了，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">被放在了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，此时下一个空闲地址变成了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">16</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个元素</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">c</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">16</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">可以满足，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">c</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">放在了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">16</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，此时下一个空闲地址变成了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">20</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个元素</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">需要对界</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，也正好落在对界上，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">放在了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">20</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，结构体在地址</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">21</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">处结束。由于</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的大小需要是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的倍数，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">21-23</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的空间被保留，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的大小变成了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">24</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">。</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><span class=tpccontent1>&nbsp; </span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">对于</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，首先把</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">a</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">放到</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界，假定是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">0</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，此时下一个空闲地址是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个元素的对界也是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">b</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">摆放在</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个空闲地址变成了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">；下一个元素</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">c</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，所以取离</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">最近的地址</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">摆放</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">c</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个空闲地址变成了</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，下一个元素</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对界是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，所以</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">d</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">摆放在</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，所有元素摆放完毕，结构体在</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">15</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">处结束，占用总空间为</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">16</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，正好是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的倍数。</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><span class=tpccontent1>&nbsp; </span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这里有个陷阱，对于结构体中的结构体成员，不要认为它的对齐方式就是他的大小，看下面的例子：</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><span class=tpccontent1>struct s1</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>char a[8];</span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>struct s2</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>double d;</span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>struct s3</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>s1 s;</span><br><span class=tpccontent1>char a;</span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>struct s4</span><br><span class=tpccontent1>{</span><br><span class=tpccontent1>s2 s;</span><br><span class=tpccontent1>char a; </span><br><span class=tpccontent1>};</span><br><br><span class=tpccontent1>cout&lt;&lt;sizeof(s1)&lt;&lt;endl; // 8</span><br><span class=tpccontent1>cout&lt;&lt;sizeof(s2)&lt;&lt;endl; // 8</span><br><span class=tpccontent1>cout&lt;&lt;sizeof(s3)&lt;&lt;endl; // 9</span><br><span class=tpccontent1>cout&lt;&lt;sizeof(s4)&lt;&lt;endl; // 16;</span><br><br><span class=tpccontent1>&nbsp; s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">大小虽然都是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，但是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的对齐方式是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">1</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">，</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s2</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">是</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">8</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">（</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">double</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">），所以在</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s3</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">和</span></span><span class=tpccontent1><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">s4</span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中才有这样的差异。</span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"><br><br><span class=tpccontent1>&nbsp; </span></span><span class=tpccontent1><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">所以，在自己定义结构体的时候，如果空间紧张的话，最好考虑对齐因素来排列结构体里的元素。</span></span></font></span></span></span>
<img src ="http://www.cppblog.com/Leon916/aggbug/65250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-10-27 22:10 <a href="http://www.cppblog.com/Leon916/archive/2008/10/27/65250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网上面试题疑问</title><link>http://www.cppblog.com/Leon916/archive/2008/10/06/63320.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Mon, 06 Oct 2008 08:00:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/10/06/63320.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/63320.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/10/06/63320.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/63320.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/63320.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 快找工作了，从今天开始开始复习C++等知识了。现在遇到了几个奇怪的题目：<br>&nbsp;&nbsp; 1、
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;CLS<br><img id=Codehighlighter1_10_98_Open_Image onclick="this.style.display='none'; Codehighlighter1_10_98_Open_Text.style.display='none'; Codehighlighter1_10_98_Closed_Image.style.display='inline'; Codehighlighter1_10_98_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_10_98_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_98_Closed_Text.style.display='none'; Codehighlighter1_10_98_Open_Image.style.display='inline'; Codehighlighter1_10_98_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_10_98_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_10_98_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m_i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CLS(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;)&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">:&nbsp;m_i(i)&nbsp;{}</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_59_73_Open_Image onclick="this.style.display='none'; Codehighlighter1_59_73_Open_Text.style.display='none'; Codehighlighter1_59_73_Closed_Image.style.display='inline'; Codehighlighter1_59_73_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_59_73_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_73_Closed_Text.style.display='none'; Codehighlighter1_59_73_Open_Image.style.display='inline'; Codehighlighter1_59_73_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_59_73_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_59_73_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CLS()<br><img id=Codehighlighter1_83_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_83_96_Open_Text.style.display='none'; Codehighlighter1_83_96_Closed_Image.style.display='inline'; Codehighlighter1_83_96_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_83_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_96_Closed_Text.style.display='none'; Codehighlighter1_83_96_Open_Image.style.display='inline'; Codehighlighter1_83_96_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_83_96_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_83_96_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLS(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_112_150_Open_Image onclick="this.style.display='none'; Codehighlighter1_112_150_Open_Text.style.display='none'; Codehighlighter1_112_150_Closed_Image.style.display='inline'; Codehighlighter1_112_150_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_112_150_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_112_150_Closed_Text.style.display='none'; Codehighlighter1_112_150_Open_Image.style.display='inline'; Codehighlighter1_112_150_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_112_150_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_112_150_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CLS&nbsp;obj;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;obj.m_i&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
问输出是多少？<br>调试之后，发现在<br>CLS()<br>&nbsp;{<br>&nbsp;&nbsp;CLS(0);<br>&nbsp;}<br>中的this指针不同，所以这里可能和c#或者Java不同，当调用CLS（0）的时候，它会重新分配一块空间，并且初始化新对象的m_i=0.<br>后来在网上搜了一下，找打了这篇文章：<a href="http://blog.csdn.net/cnheying/archive/2007/05/16/1611698.aspx">http://blog.csdn.net/cnheying/archive/2007/05/16/1611698.aspx</a>&nbsp;和<a href="http://www.cnblogs.com/chio/archive/2007/10/20/931043.html">http://www.cnblogs.com/chio/archive/2007/10/20/931043.html</a>。不知道大家对这道题有什么想法，欢迎讨论！<br>2、
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)a&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">)a&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">cout&nbsp;&lt;&lt;&nbsp;*(int*)&amp;a&nbsp;&lt;&lt;&nbsp;endl;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;boolalpha&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)a&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">)a)&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)b&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">)b&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;boolalpha&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)b&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">)b)&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;</span></div>
本来不存在我注释的那一行，考虑（int&amp;)a的时候，发现输出跟想想的不一样，后来发现和*(int*)&amp;a的值是相同的。所以我猜测(int&amp;)a可能首先取a的地址，然后转化成(int*)，再去a地址里面的内容，这时是按照int读取的。<br>3、
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</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><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;y&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">:&nbsp;y)&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;</span></div>
&nbsp;关于三元运算符和++的比较，++的优先级比三元运算符高。我是在VS2005下调试的，通过读汇编代码，发现((*p) ++&lt; y ? (*p)++: y)；首先对x+1，然后把值回写的内存中，用原来的之比较，比较晚之后，再从内存中读取出值，进行cout&lt;&lt;（*p）++&lt;&lt;endl;的操作。输出原值后再+1。结果x最终输出3。（这样如果死扣语言，我觉得自己会死人的）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果以上哪里分析的不对，欢迎大家拍砖！！
<img src ="http://www.cppblog.com/Leon916/aggbug/63320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-10-06 16:00 <a href="http://www.cppblog.com/Leon916/archive/2008/10/06/63320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写给自己</title><link>http://www.cppblog.com/Leon916/archive/2008/10/01/63137.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Wed, 01 Oct 2008 11:18:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/10/01/63137.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/63137.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/10/01/63137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/63137.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/63137.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好长时间没有做ACM的题，今天做了2道，都没有做出来，参考了别人的思路。自己太不专心，如果一个人能每天花一些时间在一件事情上，我想他一定会干好这件事情。我想成为那种人，自己每天都做点题。持之以恒！<br>&nbsp;&nbsp;&nbsp; 鞭策自己！
<img src ="http://www.cppblog.com/Leon916/aggbug/63137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-10-01 19:18 <a href="http://www.cppblog.com/Leon916/archive/2008/10/01/63137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC数据类型 </title><link>http://www.cppblog.com/Leon916/archive/2008/09/29/63043.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Mon, 29 Sep 2008 07:36:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/09/29/63043.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/63043.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/09/29/63043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/63043.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/63043.html</trackback:ping><description><![CDATA[这两天学习windows编程，对里面的类型不熟悉，这是从网上找的一份。<br><br>标识符 实际类型 意义&nbsp; <br>CHAR char 8位Windows(ANSI)字符。&nbsp; <br>CCHAR char 8位Windows(ANSI)字符。&nbsp; <br>PSZ char* 一个以"NULL"结束的Windows字符串的指针&nbsp; <br>PCHAR CHAR* 一个CHAR型指针&nbsp; <br>PSTR CHAR* 一个以"NULL"结尾的8位Windows(ANSI)字符串指针&nbsp; <br>LPSTR CHAR* 一个以"NULL"结尾的8位WINDOWS(ANSI)字符串指针&nbsp; <br>NPSTR CHAR* 一个以"NULL"结尾的8位WINDOWS(ANSI)字符串指针&nbsp; <br>PCSTR CONST CHAR* 一个以"NULL"结尾的8位WINDOWS(ANSI)字符串常量指针&nbsp; <br>LPCSTR CONST CHAR* 一个以"NULL"结尾的8位WINDOWS(ANSI)字符串常量指针&nbsp; <br>WCHAR wchar_t 16位Unicode字符&nbsp; <br>PWCH WCHAR* 一个WCHAR型指针&nbsp; <br>PWCHAR WCHAR* 一个WCHAR型指针&nbsp; <br>PWSTR WCHAR* 一个以"NULL"结尾的16位Unicode字符串指针&nbsp; <br>LPWSTR WCHAR FAR* 一个以"NULL"结尾的16位Unicode字符串指针&nbsp; <br>NWPSTR WCHAR* 一个以"NULL"结尾的16位Unicode字符串指针&nbsp; <br>PCWCH CONST WCHAR* 一个WCHAR型常量指针&nbsp; <br>LPCWCH CONST WCHAR FAR* 一个WCHAR型常量指针&nbsp; <br>PCWSTR CONST WCHAR* 一个以"NULL"结束的16位Unicode字符串常量指针&nbsp; <br>LPCWSTR CONST WCHAR FAR* 一个以"NULL"结尾的16位Unicode字符串常量指针&nbsp; <br>TCHAR WCHAR(或char) 兼容型字符(Unicode中为WCHAR型，Windows中为CHAR型)&nbsp; <br>PTCHAR WCHAR*(或char) 一个TCHAR型指针&nbsp; <br>PTCH LPWSTR(或LPSTR) Unicode中为LPWSTR型，Windows中为LPSTR型&nbsp; <br>LPTCH LPWSTR(或LPSTR) Unicode中为LPWSTR型，Windows中为LPSTR型&nbsp; <br>PTSTR LPWSTR(或LPSTR) Unicode中为LPWSTR型，Windows中为LPSTR型&nbsp; <br>LPTSTR LPWSTR(或LPSTR) Unicode中为LPWSTR型，Windows中为LPSTR型&nbsp; <br>PCTSTR PCWSTR(或PCSTR) Unicode中为PCWSTR型，Windows中为PCSTR型&nbsp; <br>LPCTSTR LPCWSTR(或LPCSTR) Unicode中为LPCWSTR型，Windows中为LPCSTR型&nbsp; <br>UCHAR unsigned char 无符号字符型&nbsp; <br>PUCHAR UCHAR* 一个UCHAR型指针&nbsp; <br>BSTR OLECHAR* 32位字符指针(不推荐使用)&nbsp; <br>OLECHAR wchar_t Unicode字符类型(用于对象链接与嵌入的数据类型，如嵌入Word文档)&nbsp; <br>LPOLESTR OLECHAR* 一个OLECHAR型指针&nbsp; <br>LPCOLESTR const OLECHAR* 指向OLECHAR类型的字符串常量指针&nbsp; <br>---------------------------------------------------<br>
<p>数值类：<br>---------------------------------------------------<br>标识符 实际类型 意义&nbsp; <br>BYTE unsigned char 8位无符号整数&nbsp; <br>PBYTE BYTE near* 一个BYTE型指针&nbsp; <br>LPBYTE BYTE far* 一个BYTE型指针&nbsp; <br>TBYTE WCHAR(或unsigned char) Unicode中为WCHAR型，Windows中为unsigned char型&nbsp; <br>PTBYTE WCHAR*(或unsigned char*) 一个TBYTE型指针&nbsp; <br>BOOL int 布尔变量，其值为(TRUE或FALSE)&nbsp; <br>PBOOL BOOL near* 一个BOOL型指针&nbsp; <br>LPBOOL BOOL far* 一个BOOL型指针&nbsp; <br>BOOLEAN BYTE 布尔变量，其值为(TRUE或FALSE)&nbsp; <br>PBOOLEAN BOOLEAN* 一个BOOLEAN型指针&nbsp; <br>SHORT short 16位短整数(有符号)&nbsp; <br>PSHORT SHORT* 一个SHORT型指针&nbsp; <br>USHORT unsigned short 无符号短整型&nbsp; <br>PUSHORT USHORT* 一个USHORT型指针&nbsp; <br>INT int 32位符号整数&nbsp; <br>INT32&nbsp; 32位符号整数&nbsp; <br>INT64&nbsp; 64位符号整数&nbsp; <br>INT_PTR&nbsp; Signed integral type for pointer precision.Use when casting a pointer to an integer to perform pointer arithmetic.&nbsp; <br>PINT INT near* 一个INT型指针&nbsp; <br>LPINT INT far* 一个INT型指针&nbsp; <br>UINT unsigned int 无符号的整型&nbsp; <br>UINT32&nbsp; 无符号的INT32型&nbsp; <br>UINT64&nbsp; 无符号的INT64型&nbsp; <br>UINT_PTR&nbsp; 无符号的INT_PTR型&nbsp; <br>PUINT UINT* 一个UINT型指针&nbsp; <br>LONG long 32位符号整数&nbsp; <br>LONG32&nbsp; 32位符号整数&nbsp; <br>LONG64&nbsp; 64位符号整数&nbsp; <br>LONGLONG __int64(或double) 64位符号整数&nbsp; <br>LONG_PTR&nbsp; Signed long type for pointer precision.Use when casting a pointer to a long to perform pointer arithmetic.&nbsp; <br>PLONG LONG near* 一个LONG型指针&nbsp; <br>LPLONG LONG far* 一个LONG型指针&nbsp; <br>PLONGLONG LONGLONG* 一个LONGLONG型指针&nbsp; <br>ULONG unsigned long 无符号的LONG型&nbsp; <br>ULONG32&nbsp; 无符号的LONG32型&nbsp; <br>ULONG64&nbsp; 无符号的LONG64型&nbsp; <br>ULONGLONG unsigned __int64(或double) 64位无符号整型&nbsp; <br>ULONG_PTR&nbsp; 无符号的LONG_PTR型&nbsp; <br>PULONG ULONG* 一个ULONG型指针&nbsp; <br>PULONGLONG ULONGLONG* 一个ULONGLONG型指针&nbsp; <br>WORD unsigned short 16位无符号整型&nbsp; <br>PWORD WORD near* 一个WORD型指针&nbsp; <br>LPWORD WORD far* 一个WORD型指针&nbsp; <br>DWORD unsigned long 32位无符号整数&nbsp; <br>DWORD32&nbsp; 32位无符号整型&nbsp; <br>DWORD64&nbsp; 64位无符号整型&nbsp; <br>DWORD_PTR&nbsp; Unsigned long type for pointer precision.Use when casting a pointer to a long type to perform pointer arithmetic.(Also commonly used for general 32-bit parameters that have been extended to 64 bits in 64-bit Windows.&nbsp; <br>PDWORD DWORD near* 一个DWORD型指针&nbsp; <br>LPDWORD DWORD far* 一个DWORD型指针&nbsp; <br>FLOAT float 浮点变量&nbsp; <br>PFLOAT FLOAT near* 一个FLOAT型指针&nbsp; <br>---------------------------------------------------</p>
<p>句柄类：<br>---------------------------------------------------<br>标识符 实际类型 意义&nbsp; <br>HANDLE void* 对象句柄(32位无符号整数)&nbsp; <br>PHANDLE HANDLE NEAR* 一个HANDLE型指针&nbsp; <br>SPHANDLE HANDLE NEAR* 一个HANDLE型指针&nbsp; <br>LPHANDLE HANDLE FAR* 一个HANDLE型指针&nbsp; <br>GLOBALHANDLE HANDLE 一个全局句柄&nbsp; <br>HDC HANDLE 设备描述表(DC)句柄&nbsp; <br>HBITMAP HANDLE 位图句柄&nbsp; <br>HBRUSH HANDLE 画刷句柄&nbsp; <br>HICON HANDLE 图标句柄&nbsp; <br>HCURSOR HICON 光标句柄&nbsp; <br>HPALETTE HANDLE 调色板句柄&nbsp; <br>HPEN HANDLE 画笔句柄&nbsp; <br>HCONV&nbsp; 动态数据交换(DDE)会话句柄&nbsp; <br>HACCEL HANDLE 加速键表句柄&nbsp; <br>HCONVLIST&nbsp; DDE会话列表句柄&nbsp; <br>HDDEDATA&nbsp; DDE数据句柄&nbsp; <br>HDESK HANDLE 桌面句柄&nbsp; <br>HDLG&nbsp;&nbsp;&nbsp; 对话框句柄&nbsp; <br>HDROP&nbsp;&nbsp;&nbsp; 一个internal drop structure句柄。&nbsp; <br>HDWP&nbsp;&nbsp;&nbsp; 延期窗口位置结构句柄&nbsp; <br>HENHMETAFILE HANDLE 增强图元文件句柄&nbsp; <br>HFILE int或short 文件句柄，用于函数OpenFile，不是CreateFile&nbsp; <br>HFONT HANDLE 字体句柄&nbsp; <br>HGDIOBJ HANDLE(void NEAR*) GDI对象句柄&nbsp; <br>HGLOBAL HANDLE 全局内存块句柄&nbsp; <br>HHOOK HANDLE 钩子句柄&nbsp; <br>HIMAGELIST&nbsp;&nbsp;&nbsp; 映像列表句柄&nbsp; <br>HIMC&nbsp;&nbsp;&nbsp; 输入描述表句柄&nbsp; <br>HINSTANCE HANDLE 实例句柄(32位无符号整数)&nbsp; <br>HKEY&nbsp;&nbsp;&nbsp; 登记关键字句柄&nbsp; <br>HKL HANDLE Input locale identifier.&nbsp;</p>
<img src ="http://www.cppblog.com/Leon916/aggbug/63043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-09-29 15:36 <a href="http://www.cppblog.com/Leon916/archive/2008/09/29/63043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ delete出错</title><link>http://www.cppblog.com/Leon916/archive/2008/09/23/62632.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Tue, 23 Sep 2008 14:08:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/09/23/62632.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/62632.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/09/23/62632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/62632.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/62632.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 今天调试了一个程序，花了2个小时，先晕一下！主要的错误是内存堆的空间被删除了大于1次，出现了一个对话框，有这个信息：line：47.大意就是内存堆出错。以后要记住这个错误！！！
<img src ="http://www.cppblog.com/Leon916/aggbug/62632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-09-23 22:08 <a href="http://www.cppblog.com/Leon916/archive/2008/09/23/62632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始学习windows编程</title><link>http://www.cppblog.com/Leon916/archive/2008/09/20/62350.html</link><dc:creator>Leon916</dc:creator><author>Leon916</author><pubDate>Sat, 20 Sep 2008 06:30:00 GMT</pubDate><guid>http://www.cppblog.com/Leon916/archive/2008/09/20/62350.html</guid><wfw:comment>http://www.cppblog.com/Leon916/comments/62350.html</wfw:comment><comments>http://www.cppblog.com/Leon916/archive/2008/09/20/62350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Leon916/comments/commentRss/62350.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Leon916/services/trackbacks/62350.html</trackback:ping><description><![CDATA[从今天开始学习windows编程，这完全是为了应对这次找工作。<br>1、首先理解windows程序运行的一些基本知识。网址：<a href="http://book.csdn.net/bookfiles/29/index.html">http://book.csdn.net/bookfiles/29/index.html</a>，先理解这里面的东西<br>2、学习windows编程书，理解其中的每一个例子程序。<br>3、了解操作系统。 
<img src ="http://www.cppblog.com/Leon916/aggbug/62350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Leon916/" target="_blank">Leon916</a> 2008-09-20 14:30 <a href="http://www.cppblog.com/Leon916/archive/2008/09/20/62350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>