什么是注釋?
- 注釋是在所有計(jì)算機(jī)語言中都非常重要的一個(gè)概念,從字面上看,就是注解、解釋的意思
- 注釋可以用來解釋某一段程序或者某一行代碼是什么意思,方便程序員之間的交流溝通
- 注釋可以是任何文字,也就是說可以寫中文
- 被注釋的內(nèi)容在開發(fā)工具中會(huì)有特殊的顏色
為什么要使用注釋?
- 沒有編寫任何注釋的程序
void 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("親, 請(qǐng)輸入相應(yīng)的操作\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("想挑戰(zhàn)自己,請(qǐng)購買完整版本\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");
}
}

- 編寫了注釋的程序
/*
R代表一個(gè)人
#代表一堵墻
// 0123456
####### // 0
# # // 1
#R ## # // 2
# # # // 3
## # // 4
####### // 5
分析:
>1.保存地圖(二維數(shù)組)
>2.輸出地圖
>3.操作R前進(jìn)(控制小人行走)
3.1.接收用戶輸入(scanf/getchar)
w(向上走) s(向下走) a(向左走) d(向右走)
3.2.判斷用戶的輸入,控制小人行走
3.2.1.替換二維數(shù)組中保存的數(shù)據(jù)
(
1.判斷是否可以修改(如果不是#就可以修改)
2.修改現(xiàn)有位置為空白
3.修改下一步為R
)
3.3.輸出修改后的二維數(shù)組
4.判斷用戶是否走出出口
*/
// 聲明打印地圖方法
void printMap(char map[6][7] , int row, int col);
int main(int argc, const char * argv[])
{
// 1.定義二維數(shù)組保存迷宮地圖
char map[6][7] = {
{'#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#' ,' ', ' '},
{'#', 'R', ' ', '#', '#', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', '#'},
{'#', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#'}
};
// 2.計(jì)算地圖行數(shù)和列數(shù)
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("親, 請(qǐng)輸入相應(yīng)的操作\n");
printf("w(向上走) s(向下走) a(向左走) d(向右走)\n");
char run;
run = getchar();
// 6.2根據(jù)用戶輸入控制人物行走
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("想挑戰(zhàn)自己,請(qǐng)購買完整版本\n");
return 0;
}
/**
* @brief printMap
* @param map 需要打印的二維數(shù)組
* @param row 二維數(shù)組的行數(shù)
* @param col 二維數(shù)組的列數(shù)
*/
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");
}
}
注釋的分類
-
單行注釋
- // 被注釋內(nèi)容
- 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
- 作用范圍: 從第二個(gè)斜線到這一行末尾
- 快捷鍵:Ctrl+/
-
多行注釋
- /* 被注釋內(nèi)容 */
- 使用范圍:任何地方都可以寫注釋:函數(shù)外面、里面,每一條語句后面
- 作用范圍: 從第一個(gè)/*到最近的一個(gè)*/
注釋的注意點(diǎn)
- 單行注釋可以嵌套單行注釋、多行注釋
// 南哥 // it666.com
// /* 江哥 */
// 帥哥
- 多行注釋可以嵌套單行注釋
/*
// 作者:LNJ
// 描述:第一個(gè)C語言程序作用:這是一個(gè)主函數(shù),C程序的入口點(diǎn)
*/
- 多行注釋不能嵌套多行注釋
/*
哈哈哈
/*嘻嘻嘻*/
呵呵呵
*/
注釋的應(yīng)用場(chǎng)景
- 思路分析
/*
R代表一個(gè)人
#代表一堵墻
// 0123456
####### // 0
# # // 1
#R ## # // 2
# # # // 3
## # // 4
####### // 5
分析:
>1.保存地圖(二維數(shù)組)
>2.輸出地圖
>3.操作R前進(jìn)(控制小人行走)
3.1.接收用戶輸入(scanf/getchar)
w(向上走) s(向下走) a(向左走) d(向右走)
3.2.判斷用戶的輸入,控制小人行走
3.2.1.替換二維數(shù)組中保存的數(shù)據(jù)
(
1.判斷是否可以修改(如果不是#就可以修改)
2.修改現(xiàn)有位置為空白
3.修改下一步為R
)
3.3.輸出修改后的二維數(shù)組
4.判斷用戶是否走出出口
*/
- 對(duì)變量進(jìn)行說明
// 2.計(jì)算地圖行數(shù)和列數(shù)
int row = sizeof(map)/sizeof(map[0]);
int col = sizeof(map[0])/ sizeof(map[0][0]);
- 對(duì)函數(shù)進(jìn)行說明
/**
* @brief printMap
* @param map 需要打印的二維數(shù)組
* @param row 二維數(shù)組的行數(shù)
* @param col 二維數(shù)組的列數(shù)
*/
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");
}
}
- 多實(shí)現(xiàn)邏輯排序
// 1.定義二維數(shù)組保存迷宮地圖
char map[6][7] = {
{'#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#' ,' ', ' '},
{'#', 'R', ' ', '#', '#', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', '#'},
{'#', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#'}
};
// 2.計(jì)算地圖行數(shù)和列數(shù)
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]) {
... ...
}
使用注釋的好處
- 注釋是一個(gè)程序員必須要具備的良好習(xí)慣
- 幫助開發(fā)人員整理實(shí)現(xiàn)思路
- 解釋說明程序, 提高程序的可讀性
- 初學(xué)者編寫程序可以養(yǎng)成習(xí)慣:先寫注釋再寫代碼
- 將自己的思想通過注釋先整理出來,在用代碼去體現(xiàn)
- 因?yàn)榇a僅僅是思想的一種體現(xiàn)形式而已
什么是關(guān)鍵字?
- 關(guān)鍵字,也叫作保留字。是指一些被C語言賦予了特殊含義的單詞
- 關(guān)鍵字特征:
- 全部都是小寫
- 在開發(fā)工具中會(huì)顯示特殊顏色
- 關(guān)鍵字注意點(diǎn):
- 因?yàn)殛P(guān)鍵字在C語言中有特殊的含義, 所以不能用作變量名、函數(shù)名等
- C語言中一共有32個(gè)關(guān)鍵字
| 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 |
這些不用專門去記住,用多了就會(huì)了。在編譯器里都是有特殊顏色的。 我們用到時(shí)候會(huì)一個(gè)一個(gè)講解這個(gè)些關(guān)鍵字怎么用,現(xiàn)在瀏覽下,有個(gè)印象就OK了
關(guān)鍵字分類
什么是標(biāo)識(shí)符?
- 從字面上理解,就是用來標(biāo)識(shí)某些東西的符號(hào),標(biāo)識(shí)的目的就是為了將這些東西區(qū)分開來
- 其實(shí)標(biāo)識(shí)符的作用就跟人類的名字差不多,為了區(qū)分每個(gè)人,就在每個(gè)人出生的時(shí)候起了個(gè)名字
- C語言是由函數(shù)構(gòu)成的,一個(gè)C程序中可能會(huì)有多個(gè)函數(shù),為了區(qū)分這些函數(shù),就給每一個(gè)函數(shù)都起了個(gè)名稱, 這個(gè)名稱就是標(biāo)識(shí)符
- 綜上所述: 程序員在程序中給函數(shù)、變量等起名字就是標(biāo)識(shí)符
標(biāo)識(shí)符命名規(guī)則
- 只能由字母(a~z、 A~Z)、數(shù)字、下劃線組成
- 不能包含除下劃線以外的其它特殊字符串
- 不能以數(shù)字開頭
- 不能是C語言中的關(guān)鍵字
- 標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫, test和Test是兩個(gè)不同的標(biāo)識(shí)符
練習(xí)
- 下列哪些是合法的標(biāo)識(shí)符
| fromNo22 | from#22 | my_Boolean | my-Boolean | 2ndObj | GUI | lnj |
| Mike2jack | 江哥 | _test | test!32 | haha(da)tt | jack_rose | jack&rose |
標(biāo)識(shí)符命名規(guī)范
- 見名知意,能夠提高代碼的可讀性
- 駝峰命名,能夠提高代碼的可讀性
- 駝峰命名法就是當(dāng)變量名或函數(shù)名是由多個(gè)單詞連接在一起,構(gòu)成標(biāo)識(shí)符時(shí),第一個(gè)單詞以小寫字母開始;第二個(gè)單詞的首字母大寫.
- 例如: myFirstName、myLastName這樣的變量名稱看上去就像駝峰一樣此起彼伏


