什么是注释?
- 注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解、解释的意思
- 注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通
- 注释可以是任何文字,也就是说可以写中文
- 被注释的内容在开发工具中会有特殊的颜色
为什么要使用注释?
- 没有编写任何注释的程序
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70void printMap(char map[6][7] , int row, int col); int main(int argc, const char * argv[]) { char map[6][7] = { {'#', '#', '#', '#', '#', '#', '#'}, {'#', ' ', ' ', ' ', '#' ,' ', ' '}, {'#', 'R', ' ', '#', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#', ' ', '#'}, {'#', '#', ' ', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#', '#', '#'} }; int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); printMap(map, row, col); int pRow = 2; int pCol = 1; int endRow = 1; int endCol = 6; while ('R' != map[endRow][endCol]) { printf("亲, 请输入相应的操作n"); printf("w(向上走) s(向下走) a(向左走) d(向右走)n"); char run; run = getchar(); switch (run) { case 's': if ('#' != map[pRow + 1][pCol]) { map[pRow][pCol] = ' '; pRow++;//3 map[pRow][pCol] = 'R'; } break; case 'w': if ('#' != map[pRow - 1][pCol]) { map[pRow][pCol] = ' '; pRow--; map[pRow][pCol] = 'R'; } break; case 'a': if ('#' != map[pRow][pCol - 1]) { map[pRow][pCol] = ' '; pCol--; map[pRow][pCol] = 'R'; } break; case 'd': if ('#' != map[pRow][pCol + 1]) { map[pRow][pCol] = ' '; pCol++; map[pRow][pCol] = 'R'; } break; } printMap(map, row, col); } printf("你太牛X了n"); printf("想挑战自己,请购买完整版本n"); return 0; } void printMap(char map[6][7] , int row, int col) { system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("n"); } }
- 编写了注释的程序
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115/* R代表一个人 #代表一堵墙 // 0123456 ####### // 0 # # // 1 #R ## # // 2 # # # // 3 ## # // 4 ####### // 5 分析: >1.保存地图(二维数组) >2.输出地图 >3.操作R前进(控制小人行走) 3.1.接收用户输入(scanf/getchar) w(向上走) s(向下走) a(向左走) d(向右走) 3.2.判断用户的输入,控制小人行走 3.2.1.替换二维数组中保存的数据 ( 1.判断是否可以修改(如果不是#就可以修改) 2.修改现有位置为空白 3.修改下一步为R ) 3.3.输出修改后的二维数组 4.判断用户是否走出出口 */ // 声明打印地图方法 void printMap(char map[6][7] , int row, int col); int main(int argc, const char * argv[]) { // 1.定义二维数组保存迷宫地图 char map[6][7] = { {'#', '#', '#', '#', '#', '#', '#'}, {'#', ' ', ' ', ' ', '#' ,' ', ' '}, {'#', 'R', ' ', '#', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#', ' ', '#'}, {'#', '#', ' ', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#', '#', '#'} }; // 2.计算地图行数和列数 int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); // 3.输出地图 printMap(map, row, col); // 4.定义变量记录人物位置 int pRow = 2; int pCol = 1; // 5.定义变量记录出口的位置 int endRow = 1; int endCol = 6; // 6.控制人物行走 while ('R' != map[endRow][endCol]) { // 6.1提示用户如何控制人物行走 printf("亲, 请输入相应的操作n"); printf("w(向上走) s(向下走) a(向左走) d(向右走)n"); char run; run = getchar(); // 6.2根据用户输入控制人物行走 switch (run) { case 's': if ('#' != map[pRow + 1][pCol]) { map[pRow][pCol] = ' '; pRow++;//3 map[pRow][pCol] = 'R'; } break; case 'w': if ('#' != map[pRow - 1][pCol]) { map[pRow][pCol] = ' '; pRow--; map[pRow][pCol] = 'R'; } break; case 'a': if ('#' != map[pRow][pCol - 1]) { map[pRow][pCol] = ' '; pCol--; map[pRow][pCol] = 'R'; } break; case 'd': if ('#' != map[pRow][pCol + 1]) { map[pRow][pCol] = ' '; pCol++; map[pRow][pCol] = 'R'; } break; } // 6.3重新输出行走之后的地图 printMap(map, row, col); } printf("你太牛X了n"); printf("想挑战自己,请购买完整版本n"); return 0; } /** * @brief printMap * @param map 需要打印的二维数组 * @param row 二维数组的行数 * @param col 二维数组的列数 */ void printMap(char map[6][7] , int row, int col) { // 为了保证窗口的干净整洁, 每次打印都先清空上一次的打印 system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("n"); } }
注释的分类
-
单行注释
- // 被注释内容
- 使用范围:任何地方都可以写注释:函数外面、里面,每一条语句后面
- 作用范围: 从第二个斜线到这一行末尾
- 快捷键:Ctrl+/
-
多行注释
- /* 被注释内容 */
- 使用范围:任何地方都可以写注释:函数外面、里面,每一条语句后面
- 作用范围: 从第一个/*到最近的一个*/
注释的注意点
- 单行注释可以嵌套单行注释、多行注释
复制代码
1
2
3
4// 南哥 // it666.com // /* 江哥 */ // 帅哥
- 多行注释可以嵌套单行注释
复制代码
1
2
3
4
5/* // 作者:LNJ // 描述:第一个C语言程序作用:这是一个主函数,C程序的入口点 */
- 多行注释***不能***嵌套多行注释
复制代码
1
2
3
4
5
6/* 哈哈哈 /*嘻嘻嘻*/ 呵呵呵 */
##注释的应用场景
- 思路分析
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28/* R代表一个人 #代表一堵墙 // 0123456 ####### // 0 # # // 1 #R ## # // 2 # # # // 3 ## # // 4 ####### // 5 分析: >1.保存地图(二维数组) >2.输出地图 >3.操作R前进(控制小人行走) 3.1.接收用户输入(scanf/getchar) w(向上走) s(向下走) a(向左走) d(向右走) 3.2.判断用户的输入,控制小人行走 3.2.1.替换二维数组中保存的数据 ( 1.判断是否可以修改(如果不是#就可以修改) 2.修改现有位置为空白 3.修改下一步为R ) 3.3.输出修改后的二维数组 4.判断用户是否走出出口 */
- 对变量进行说明
复制代码
1
2
3
4// 2.计算地图行数和列数 int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]);
- 对函数进行说明
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/** * @brief printMap * @param map 需要打印的二维数组 * @param row 二维数组的行数 * @param col 二维数组的列数 */ void printMap(char map[6][7] , int row, int col) { system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("n"); } }
- 多实现逻辑排序
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25// 1.定义二维数组保存迷宫地图 char map[6][7] = { {'#', '#', '#', '#', '#', '#', '#'}, {'#', ' ', ' ', ' ', '#' ,' ', ' '}, {'#', 'R', ' ', '#', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#', ' ', '#'}, {'#', '#', ' ', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#', '#', '#'} }; // 2.计算地图行数和列数 int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); // 3.输出地图 printMap(map, row, col); // 4.定义变量记录人物位置 int pRow = 2; int pCol = 1; // 5.定义变量记录出口的位置 int endRow = 1; int endCol = 6; // 6.控制人物行走 while ('R' != map[endRow][endCol]) { ... ... }
使用注释的好处
- 注释是一个程序员必须要具备的良好习惯
- 帮助开发人员整理实现思路
- 解释说明程序, 提高程序的可读性
- 初学者编写程序可以养成习惯:先写注释再写代码
- 将自己的思想通过注释先整理出来,在用代码去体现
- 因为代码仅仅是思想的一种体现形式而已
什么是关键字?
- 关键字,也叫作保留字。是指一些被C语言赋予了特殊含义的单词
- 关键字特征:
- 全部都是小写
- 在开发工具中会显示特殊颜色
- 关键字注意点:
- 因为关键字在C语言中有特殊的含义, 所以不能用作变量名、函数名等
- C语言中一共有32个关键字
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
char | short | int | long | float | double | if | else |
return | do | while | for | switch | case | break | continue |
default | goto | sizeof | auto | register | static | extern | unsigned |
signed | typedef | struct | enum | union | void | const | volatile |
这些不用专门去记住,用多了就会了。在编译器里都是有特殊颜色的。 我们用到时候会一个一个讲解这个些关键字怎么用,现在浏览下,有个印象就OK了
关键字分类
什么是标识符?
- 从字面上理解,就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来
- 其实标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字
- C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称, 这个名称就是标识符
- 综上所述: 程序员在程序中给函数、变量等起名字就是标识符
标识符命名规则
- 只能由字母(a~z、 A~Z)、数字、下划线组成
- 不能包含除下划线以外的其它特殊字符串
- 不能以数字开头
- 不能是C语言中的关键字
- 标识符严格区分大小写, test和Test是两个不同的标识符
练习
- 下列哪些是合法的标识符
fromNo22 | from#22 | my_Boolean | my-Boolean | 2ndObj | GUI | lnj |
Mike2jack | 江哥 | _test | test!32 | haha(da)tt | jack_rose | jack&rose |
##标识符命名规范
- 见名知意,能够提高代码的可读性
- 驼峰命名,能够提高代码的可读性
- 驼峰命名法就是当变量名或函数名是由多个单词连接在一起,构成标识符时,第一个单词以小写字母开始;第二个单词的首字母大写.
- 例如: myFirstName、myLastName这样的变量名称看上去就像驼峰一样此起彼伏
配套视频地址
最后
以上就是紧张花瓣最近收集整理的关于江哥带你玩转C语言 | 03-C语言关键字和标识符的全部内容,更多相关江哥带你玩转C语言内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复