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 条评论
沙发空缺中,还不快抢~