[教程] C++ 的程序结构

1、函数

函数是人为的将一段具有某一功能的代码按特定的格式组织在一起,以便在程序的其它地方随时调用的一块代码的实体。在 C/C++ 中,它的格式为:

[修饰符] 返回值类型 [修饰符] 函数名([参数列表])[修饰符]

{

[函数实现]

}

初学时,我们暂时先不考虑各种修饰符,只关系核心的部分:

  • 返回值类型:用于给调用者返回函数执行的结果,如果不返回结果,则返回值类型设置为 void
  • 函数名:函数名是一个标志符,要求必需以非数字和运算符等保留的内容,也不能包含空格,一般是_或字母开头,数字不能打头,但可以在后面。更新一些的IDE也支持汉字等命名变量。
  • 参数列表:函数的参数可以没有,也可以有多个,多个参数间以 “,” 分隔。单个参数的声明格式是:
    [修饰符] 参数类型 参数名

2、任何一个程序都有一个入口函数,它代表你的常规代码执行的起始位置。一般在C/C++ 的入口函数名为 main,但是你会看到:

  • 在 Windows 下的程序里,许多 C++ 开发环境的用的是 WinMain,在动态链接库里的话,按 Windows 的约定是 DLLEntry,按照 Windows 动态链接库的规则走。
  • 由于 C/C++ 支持宏定义,一些编译器会重定义main函数的名称,所以你会见到 _tmain 一类的定义,不要奇怪,它只是一个别名。
  • main 函数的声明形式是下面的格式:
    [void|int] main([void|int argc,char *argv[] ])
    如果你的程序返回值你不关心的话,返回值部分可以声明为 void 。如果你要返回一个错误代码的话,你返回值类型应为 int。
    如果你的程序不关心通过命令行或快捷方式传递过来的参数的话,main 后面括号里的参数可以省略,或者写为 void。如果你关心的话,就必需使用两个参数的版本:第一个参数为传递过来的参数数量,第二个参数为传递进来的参数字符串列表,可以写为 char *argv[] 或 char **argv。

3、C/C++ 有一个强大的预处理系统,可以支持宏定义及许多编译指令的控制,我们常见的包括:

  • 文件包含指令 #include 用于包含另一个文件的代码
    #include <文件名>
    #include “文件名”
    两者的区别在于搜索路径的范围不同,前者只在系统和工程设定的搜索目录下进行搜索,而后者则是在当前目录和系统及工程设定的目录下进行搜索文件。
  • 条件编译指令用于在符合特定条件时编译限定范围内的代码
    #ifdef XXXX
    如果XXXX 定义的话,就编译这部分代码
    #else
    如果不成立,就编译这部分代码
    #endif
  • 宏定义指令 #define 用于定义一个宏替换,以简化代码
    #define 宏名称 宏内容

    #define max(a,b) ((a)>(b))?(a):(b))
    就定义了一个 max 操作,来比较两个值,取其中最大的那个做为结果。写宏定义时,一定要注意表达式的参数尽量用括号包括起来,以保证表达式不会被误用
  • 复杂记录或类成员对齐指令 #pragma pack(push,1|2|4|8) /#pragma pack(pop) 或#pragma pack push -b等,咱们刚开始学习,暂时还用不到考虑这块,了解就好。

4、注释

C/C++的注释有两种,一种是行注释,一种是块注释。

  • 行注释符 //
    从双反斜线开始,当前行后面的内容会被认为是注释,如
    abc=1;//这是注释
  • 块注释符
    以 /* 开始,以 */ 结束,中间的内容被认为是注释。如
    abc=1;
    /*
    这是注释行1
    这是注释行2
    */

注意不要在块注释中包含 */ ,C / C++ 编译器遇到它就会认为块注释结束了,所以就会编译出错。

5、命名空间

为了应付日益增大的代码量和团队开发可能会引起的命名冲突问题,引入了命名空间来予以区分,格式为:
namespace 命名空间名

{

函数或变量定义

}

在使用时,可以直接用 命名空间::函数或变量名 来访问其命名空间内的函数或变量。如果不想写命名空间,且函数或变量名在当前代码引用的单元之内没有冲突,可以直接加入下面的代码:

using namespace 命名空间名;

然后就可以直接使用其命名空间内的函数或变量了。

6、变量的声明

变量的声明格式和前面参数一样,格式也是:
[修饰符] 变量类型 [修饰符] 变量名;

多个变量声明可以以 “,” 分隔。

7、运算符

包括赋值、算术运算符、逻辑运算符和位运算符,具体的内容及用法参考书里的附录,这个要背下来的。

8、关于 iostream 了解即可,不写命令行程序很少用到。

分享到:

0 条评论

沙发空缺中,还不快抢~