04-C語言關(guān)鍵字和標(biāo)識(shí)符-指趣學(xué)院

什么是注釋?

  • 注釋是在所有計(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這樣的變量名稱看上去就像駝峰一樣此起彼伏

配套視頻地址:www.it666.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,546評(píng)論 0 13
  • 關(guān)鍵字及分類標(biāo)識(shí)符注釋數(shù)據(jù)及數(shù)據(jù)類型常量的概述及分類變量printf函數(shù)scanf函數(shù) 關(guān)鍵字及分類 關(guān)鍵字的基本...
    SeNan閱讀 1,105評(píng)論 0 1
  • 讀經(jīng)時(shí)間: 2017年5月10日 星期三 多云 讀經(jīng)人員: 媽媽、 可可。 讀經(jīng)內(nèi)容: 《易經(jīng)》系辭上傳 第...
    161d968e601f閱讀 199評(píng)論 0 0
  • 烈日當(dāng)空,空氣中處處彌漫著熱浪…… 建軍節(jié)將要來臨,愿守在祖國(guó)各地的可愛的你們平安,開心…… 愿大家各自安好
    簡(jiǎn)婷兮閱讀 216評(píng)論 0 0
  • 祈禱明天快點(diǎn)到來, 也快點(diǎn)結(jié)束, 煎熬了10多天了。 能用上的都用了。
    辰辰2008閱讀 237評(píng)論 0 1

友情鏈接更多精彩內(nèi)容