通过一个简单C程序复习C语言知识
下面的简单C程序是用来自己将来回顾使用的,一般的程序不会写那么多的注释了,思维比较跳跃,呵呵!
1 /*
2 * 版权,文件变更信息说明
3 * 文件名:test.cpp
4 * 作用:测试
5 * 原作者:zxh
6 * 最新修改:zxh
7 * 最新修改时间:2010-06-18
8 */
9
10 /*
11 * 头文件注意事项:
12 * 1.自定义头文件采用条件编译方式:#ifndef/#define/#endif可以避免重复引用头文件
13 * 2.<>引用头文件表示从包含(include)目录搜索该头文件
14 * ""引用头文件表示从当前工作(work)目录搜索该头文件,如果没有找到,再在包含目录中找。
15 * 3.引用头文件的好处有:通过头文件来调用库功能(定义不公开);头文件能加强类型安全检查。
16 */
17 #include<stdio.h>
18 #include<stdlib.h>
19 /*
20 * 宏注意事项:
21 * 1.C中定义宏,但是C++中用const常量替代了宏,因const能够提供类型检查,并能调试(此外const能够用在指针参数传递,避免修改原指针,避免修改类成员变量)。
22 * 2.如果定义宏,则该宏尽量用括号括起来,避免代入时出错。
23 * 3.宏一般大写,避免了硬编码。
24 */
25 #define BELL '\a'
26
27 /*
28 * main函数定义事项:
29 * 1.main函数尽量提供返回值,知道程序执行状态
30 * 2.参数argc和argv可以使其他名字,分别表示参数的个数和每个参数的字符串,其中char *argv[]也就是char **argv;
31 * 需要注意的是,函数名字算作第1个参数了。
32 * 3.注意函数内的变量是局部变量,因为函数调用是栈调用的,执行到函数尾部时,所有变量已被弹出,因而范围就在函数内。
33 */
34 int main(char argc,char *argv[])
35 {
36 /*
37 * 最好定义时就初始化,否则ctr为任意一个数,未初始化引用时会造成致命错误。
38 */
39 int ctr = 0;
40
41 /*
42 * fname为常量指针,fname表示地址0x83243243等,fname[1] = *(fname+1)
43 */
44 char fname[20];
45
46 /*
47 * 可变参数输出函数,编译时关闭类型检查,不推荐使用。
48 */
49 printf("What is your first name?");
50
51 /*
52 * 如果fname是一个变量,则需加取地址符&取得fname的地址,但这里fname本来就表示数组首地址,故不需&
53 */
54 scanf("%s",fname);
55
56 /*
57 *迪杰斯特拉程序结构:顺序,选择,循环,避免goto破坏程序结构
58 */
59 while(ctr < 5)
60 {
61 printf("%s\n",fname);
62
63 /*
64 * i++ 和 ++i的区别?,以及x=x+1,x+=1,x++执行那个效率高?
65 */
66 ctr++;
67 }
68
69 /*
70 * 响铃
71 */
72 printf("%c",BELL);
73
74 /*
75 * 暂停程序以便查看结果,在stdlib.h头文件中
76 */
77 system("pause");
78
79 /*
80 * 成功返回
81 */
82 return 0;
83 }
84
3 * 文件名:test.cpp
4 * 作用:测试
5 * 原作者:zxh
6 * 最新修改:zxh
7 * 最新修改时间:2010-06-18
8 */
9
10 /*
11 * 头文件注意事项:
12 * 1.自定义头文件采用条件编译方式:#ifndef/#define/#endif可以避免重复引用头文件
13 * 2.<>引用头文件表示从包含(include)目录搜索该头文件
14 * ""引用头文件表示从当前工作(work)目录搜索该头文件,如果没有找到,再在包含目录中找。
15 * 3.引用头文件的好处有:通过头文件来调用库功能(定义不公开);头文件能加强类型安全检查。
16 */
17 #include<stdio.h>
18 #include<stdlib.h>
19 /*
20 * 宏注意事项:
21 * 1.C中定义宏,但是C++中用const常量替代了宏,因const能够提供类型检查,并能调试(此外const能够用在指针参数传递,避免修改原指针,避免修改类成员变量)。
22 * 2.如果定义宏,则该宏尽量用括号括起来,避免代入时出错。
23 * 3.宏一般大写,避免了硬编码。
24 */
25 #define BELL '\a'
26
27 /*
28 * main函数定义事项:
29 * 1.main函数尽量提供返回值,知道程序执行状态
30 * 2.参数argc和argv可以使其他名字,分别表示参数的个数和每个参数的字符串,其中char *argv[]也就是char **argv;
31 * 需要注意的是,函数名字算作第1个参数了。
32 * 3.注意函数内的变量是局部变量,因为函数调用是栈调用的,执行到函数尾部时,所有变量已被弹出,因而范围就在函数内。
33 */
34 int main(char argc,char *argv[])
35 {
36 /*
37 * 最好定义时就初始化,否则ctr为任意一个数,未初始化引用时会造成致命错误。
38 */
39 int ctr = 0;
40
41 /*
42 * fname为常量指针,fname表示地址0x83243243等,fname[1] = *(fname+1)
43 */
44 char fname[20];
45
46 /*
47 * 可变参数输出函数,编译时关闭类型检查,不推荐使用。
48 */
49 printf("What is your first name?");
50
51 /*
52 * 如果fname是一个变量,则需加取地址符&取得fname的地址,但这里fname本来就表示数组首地址,故不需&
53 */
54 scanf("%s",fname);
55
56 /*
57 *迪杰斯特拉程序结构:顺序,选择,循环,避免goto破坏程序结构
58 */
59 while(ctr < 5)
60 {
61 printf("%s\n",fname);
62
63 /*
64 * i++ 和 ++i的区别?,以及x=x+1,x+=1,x++执行那个效率高?
65 */
66 ctr++;
67 }
68
69 /*
70 * 响铃
71 */
72 printf("%c",BELL);
73
74 /*
75 * 暂停程序以便查看结果,在stdlib.h头文件中
76 */
77 system("pause");
78
79 /*
80 * 成功返回
81 */
82 return 0;
83 }
84