﻿<?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++博客-REGION-文章分类-C++经典文章</title><link>http://www.cppblog.com/region/category/9105.html</link><description>把握自己的命运</description><language>zh-cn</language><lastBuildDate>Fri, 12 Dec 2008 04:27:37 GMT</lastBuildDate><pubDate>Fri, 12 Dec 2008 04:27:37 GMT</pubDate><ttl>60</ttl><item><title>类型的右左法则</title><link>http://www.cppblog.com/region/articles/69231.html</link><dc:creator>region</dc:creator><author>region</author><pubDate>Thu, 11 Dec 2008 19:10:00 GMT</pubDate><guid>http://www.cppblog.com/region/articles/69231.html</guid><wfw:comment>http://www.cppblog.com/region/comments/69231.html</wfw:comment><comments>http://www.cppblog.com/region/articles/69231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/region/comments/commentRss/69231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/region/services/trackbacks/69231.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana; font-size: 13px; ">很实用的一个法则.在CSDN论坛捡到的,很值得收藏.<br><br>右左法则：&nbsp;<br>0. 规则中符号&nbsp;<br>&nbsp;*&nbsp;&nbsp;读作 &#8220;指向...的指针&#8221;&nbsp;&nbsp;&nbsp;<br>&nbsp;[] &nbsp;&nbsp;读作 &#8220;...的数组&#8221;&nbsp;&nbsp;&nbsp;<br>&nbsp;()&nbsp;&nbsp;读作 &#8220;返回...的函数&#8221;&nbsp;<br>1. 起始点&nbsp;<br>&nbsp;找到声明中的标识符(Identifier)，它就是你分析的起始点，读作：&#8220;$(Identifier)是...&#8221;；&nbsp;<br>2. 右边&nbsp;<br>&nbsp;看你的标识符右边&nbsp;<br>&nbsp;a) 如果发现&#8220;()&#8221;，你将知道这是一个函数声明，这时你可以说&#8220;$(Identifier)是返回...的函数&#8221;；&nbsp;<br>&nbsp;b) 如果发现&#8220;[]&#8221;，你将知道这是一个数组声明，这时你可以说&#8220;$(Identifier)是...的数组&#8221;；&nbsp;<br>&nbsp;c) 继续向右，直到遇到右边声明结束或者遇到&#8220;)&#8221;，继续下面。&nbsp;<br>3. 左边&nbsp;<br>&nbsp;看你的标识符左边&nbsp;<br>&nbsp;a) 如果碰到的不是我们在0.中定义的符号，则直接说出它；否则按照0.中定义的符号含义说出。继续向左，直到遇到左边声明结束或&#8220;(&#8221;。&nbsp;<br>4. 重复2和3的步骤，直到声明分析完毕。&nbsp;<br>二、例子详解&nbsp;<br>我们从简单到复杂，循序渐进。&nbsp;<br>[Example 1] int *p[];&nbsp;<br>1) 找到标识符：p，读作：&#8220;p是...&#8221;；&nbsp;<br>2) 向右看：发现一&#8220;[]&#8221;，然后遇到右边声明结尾，读作：&#8220;p是...的数组&#8221;；&nbsp;<br>3) 向左看：发现一&#8220;*&#8221;， 读作：&#8220;p是指向...的指针的数组&#8221;；&nbsp;<br>4) 继续向左看：没有发现0.中定义的符号，则分析结束，读作：&#8220;p是指向int类型的指针的数组&#8221;。&nbsp;<br>[Example 2] int *(*func())();&nbsp;<br>1) 找到标识符：func，读作：&#8220;func是...&#8221;；&nbsp;<br>2) 向右看：发现一&#8220;()&#8221;，然后遇到&#8220;)&#8221;，读作：&#8220;func是返回...的函数&#8221;；&nbsp;<br>3) 向左看：发现一&#8220;*&#8221;，然后遇到&#8220;(&#8221;，读作：&#8220;func是返回指向...的指针的函数&#8221;；&nbsp;<br>4) 向右看：发现一&#8220;()&#8221;，然后右边声明结束，读作：&#8220;func是返回指向返回...的函数的指针的函数&#8221;；&nbsp;<br>5) 向左看：发现一&#8220;*&#8221;，读作：&#8220;func是返回指向返回指向...的指针的函数的指针的函数&#8221;；&nbsp;<br>6) 向左看：没有发现.中定义的符号，则分析结束，读作：&#8220;func是返回指向返回指向int类型的指针的函数的指针的函数&#8221;。&nbsp;</span><img src ="http://www.cppblog.com/region/aggbug/69231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/region/" target="_blank">region</a> 2008-12-12 03:10 <a href="http://www.cppblog.com/region/articles/69231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>