2008-02-25

The Second Chapter:Read the Code.

  事实上,作为一个初学者,我们需要从读懂源代码开始。这里涉及了另外的一些基本知识。
一个最简单的C++代码将给予我们这方面的提示:


#include<string>
using namespace std;

int main()
{
char c1;
char c2;
string s1;
string s2;

c1='A';
c2=c1;

s1="This is a test";
s2="and so is this.";

return 0;
}

  第二行“using namespace std;”在很多程序中都能见到,实际上,C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。为此,就出现了namespace的应用,我们也可以定义自己的namespaces,C++标准类库中的所有标识符都属于std命名空间,当我们使用了“using namespace std;”的时候,我们在整个程序中使用std中的名称就会被当作使用了标准库中的名称,如用cout就相当于std::cout此时如果我们要用自己定义的变量cout的话就需要用::cout。同理,当我们没有使用“using namespace std;”的时候要使用标准类库中的cout的话就必须使用std::cout才行。

  接下来是int main()这一句,int是函数的返回类型,,C++语言规定main()必须返回int类型,所以这里别无选择。main()是个特殊的函数,作为主函数,它告诉编译程序从哪里开始执行代码,C++标准规定,通常从main开始执行程序。
  关于主函数有一些需要辨析的地方:
  对于C语言在C99标准中,main函数只有如下两种格式可以被接受:
  int main ( void )
  int main ( int argc, char *argv[] )
  如果我们不想在命令行下对程序输入参数,可以选择第一种形式。其实第二种形式的两个参数argc,argv的名称是可以改变的,但保持原样是更明智的选择。main()函数的返回类型必须为int;返回的整形值作为传递给调用者的一个返回码。
-------------------------------
  对于C++在C99标准中,main函数只有如下两种格式可以被接受:
  int main ( int argc, char *argv[] )
  int main ()
  第一种格式遵从C99标准;第二种格式在不需要通过命令行向程序传递参数时使用,与C99标准中规定的格式int main(void)效果相同。
-------------------------------
  关于main函数我们还应该注意的是:

  •   一个不接受任何返回值的主函数应该写作int main(void)
  •   如果不希望一个函数返回任何东西可以使用void func(),但是这个规则不能在main函数上使用。

  http://users.aber.ac.uk/auj/voidmain.shtml这个链接提供了一些更详细的资料。

---------------------------------

流程控制语句:

1.判断语句:

  •  单分支选择:if...else....
     语法:if (条件表达式) 语句1;
        else 语句2;
        其中条件表达式为逻辑表达式,条件成立时为true/非0,条件不成立时为false/0,
        如果条件为null或undefined则被当作false
        把 statement1 和 statement2 括在大括号 ({}) 内通常是一个好习惯,
        这样就更清楚,并可以避免无意中造成错误。
  •  多分支选择:switch
     语法:switch (整型表达式)
        {
        case 整型常量表达式1:语句1;break;
        case 整型常量表达式2:语句2;break;
        ……
        default:语句;
        }
        其中default:语句表示若switch获得值没有对应的case的话就执行的语句。
        每个case语句的结尾不要忘了加break,否则将导致多个分支重叠
        
        相同case可以对应同一个语句如:
        case 'a':case'e':case'i':case'o':case'u':
        cout<<endl<<"这是元音字母" <<endl;

2。循环语句:

  •  指定次数循环:for
     语法:for(初始表达式;继续表达式;修改表达式)
        {
        语句
        }
        执行时先执行一次初识表达式,之后执行继续表达式,若继续表达式为true
        则执行语句块之后再执行修改表达式,否则跳过受控语句块。
  •  先判断后执行:while
     语法:while(条件)
        {
         语句
        }
        wihle循环先判断条件后执行循环。
  •  先执行后判断:do...while;
     语法:do
        {
        语句
        }
        while(条件);
        do...while循环先执行内容再判断条件

3.其他控制语句:

  •  无条件转移:goto
     语法:goto 标签;
     其中,语句标签是用来标记某一行的标识符,比如
     MyLabel:x=1;
     goto MyLabel;
  •  中止语句:break
     break将是程序离开当前循环区块,进入下一个语句,这样将使当前循环停止。
  •  跳转语句:continue
     continue的作用是跳过本轮循环直接执行下轮循环。比如:

    #include<iostream&rt;
    using namespace std;

    int main()

    {

    short i;

    for(i=0;i<10;i++)

    {

    cout<<i<<endl;

    if (i==5) continue;

    }

   输出的值是12346789没有5,而如果continue被替换成break的话输出的值就只有1234了。

  •  返回语句:return
     结束当前函数。并返回到调用出

没有评论: