C基礎入門 - 第一章 - C語言緒言

1章 C語言緒言程序員

 1.1 C語言概述編程

  1.1.1 C語言世界 網絡

  1.1.2 C語言學習, 能當飯吃嗎 架構

 1.2 開發環境構建 函數

  1.2.1 visual studio安裝使用 工具

  1.2.2 visual studio無腦調試 學習

 1.3 請記住 hello world 測試

  1.3.1 註釋詳解 字體

    1.3.2 也許這一章是最難的spa

 1.4 擴展閱讀 - visual studio編譯流程

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

1.1  C語言概述

  C語言的誕生是現代程序語言革命的起點。今天,C語言依舊在系統編程、嵌入式編程等領域佔據着統治地位。

C語言是丹尼斯·裏奇[Dennis Ritchie]開發的。所以,他被稱爲c語言之父、UNIX之父。

 和其它大多數語言不一樣,C語言有一個漫長的進化過程。就說當下開發人員會用到的C的版

本就有C89[1989C標準組織定義的C標準規範], C99, C11.本書將會採用C11系列語法分析和舉例子.

  C語言歷經不少年,從一個實用工具進化爲一種通過大量實踐和測試的語言。第一個C

語言編譯器大約出如今1970年。時光荏苒,做爲它的根基的Unix系統獲得了普遍使用,C

語言也隨之茁壯成長。它對直接由硬件支持的底層操做的強調,帶來了極高的效率和可移植

性,反過來也幫助了Unix得到了巨大的成功。

下面感覺一下出自C語言之父的手稿

In C, the program to print "hello world" is
#include <stdio.h>

main()
{
    printf("hello world\n");
}

感謝有你!

1.1.1 C語言世界

   信息時代已經和C語言世界密不可分. 一直在你我身邊. 例如當咱們享受快捷的刷臉支

 付的時候, 手機使用底層運行環境就是C語言實現的.

在咱們登上飛機觀看實時直播的視頻節目, 提供流傳輸服務的底層多數仍然是'C語言'.

一樣咱們使用PC操做系統內核清一色也是C寫的. 例如中科院和Ubuntu合做的

Ubuntu Kylin操做系統.

經過上面舉例, 就是爲了說明. C語言是信息社會提供信息服務的基礎!

1.1.2 C語言學習, 能當飯吃嗎 

  C真的能夠當飯吃. 學的越好, 飯吃的越有意思.C語言是馮諾依曼計算機軟件軟件體系的基石.

只要這個計算機架構沒有變化. 那麼C永遠這個體系中最強結界. C哲學強調的是自由,最小

意外. 程序員須要對本身代碼負責.

舉例來講, C語言最大優點在於和軟件開發底層機制聯繫的很緊密. 而理解底層的開發

人員, 最大的好處基礎紮實在於知其然,知其因此然. 更能融會貫通, 武功突破瓶頸更加容

. 程序世界, 萬般語言皆奧妙, C一劍可破之. 希望你就是下一個風清揚.

    C 語言怎麼學習, 推薦用最笨的方法.

    1. 多看幾遍, 不懂那就照着抄3

    2. 多作題, 多寫代碼

    3. 多思考, 多驗證代碼, 凡事多Google.

    4. 把鍵盤敲爛, 把好書看遍.

路在腳下, 路在心中, 路在手上. 不懂就多看多敲多琢磨.

1.2 開發環境構建

  C的開發環境有不少, 這裏介紹一種Microsoft公司提供一種開發環境. 適用

 Window上使用. 傳說中的宇宙第一IDE.

這裏須要本身完成這幾個步驟

   1. 網上找最新的Visual Studio 最新的企業版[目前VS 2015] iso鏡像下載

   2. 順帶找一個激活碼

   3. 註冊 Microsoft Outlook 郵箱帳號

   4. 將上面下載vs 鏡像解壓到目錄下. 刪除iso.

獲得上面結構. [操做系統推薦用Window 最新版]

1.2.1visual studio安裝使用

 點擊iso解壓包中

獲得下面運行界面.

 

 選擇自定義.

只選擇C++, 後面直接下一步, 直到安裝.預計安裝過程當中推薦保持聯網狀態.

等待30min-2h, 會提示安裝成功. 此刻按下Win鍵以後搜VS

把這個圖標快捷方式發送到桌面上. 直接雙擊進去這時候須要作

  1) 登陸使用申請的 Mircrosoft Outlook 郵箱帳號

  2) 輸入網上的找到 Visual Studio Key

這裏基本開發環境搭建完畢, 咱們實際搭建一個項目讓程序跑起來. 按照下面操做

[文件] -> [新建] -> [項目]

看見下面界面

選擇Visual Studio解決方案. 填好解決方案名稱.找到對映位置. 這裏爲了寫書方便. 必定要

用英文目錄, 不會那就用 abcd 拼音搞!!!

再在當前解決方案下面添加一個項目 [解決方案右擊] -> [添加] -> [新建項目]

後面添加具體項目. 選擇Visual C++ 空項目. 填好名稱點擊肯定.

後面 [Heoo項目右擊] -> [添加] -> [文件]

後面選擇 C++ 文件, 名稱填寫 main.c 後面肯定.

後面在main.c 文件中輸入以下內容

#include <stdio.h>

/*
 * 主函數, 用C寫首詩
 */
int main(void) {

    fprintf(stderr, "I am here!\n");

    // 獲得玩家輸入回車字符才結束
    getchar();
    return 0;
}

點擊 三角形那個 運行按鈕跑起來.

上面就是咱們程序運行的最終結果. 對於上面結果代碼, 不懂不要緊. 先熟悉開發流程, 代碼後面

會逐漸明白起來的. 加油↖(^ω^)↗.

1.2.2 visual studio無腦調試

在說以前, 先對1.2.1 Visual Studio 解決方案簡單講解一些. Visual Studio 體系結構是

一個解決方案中包含多個項目.一個項目也能夠理解成一個工程.自成一體的功能模塊. 而每

個工程之間基本獨立運行.每一個工程中又能夠包含許多源文件(能夠理解爲*.c文件).

而咱們目前只講解一個工程只有一個main.c頭文件狀況. 對於1.2.1 main.c 解釋

以下. 簡單看看混個臉熟.

這裏說一下 , 回車 就是鍵盤中 Enter , C 中用轉義字符 ‘\n’ 表示.由於字符

分爲可見字符例如’a’, ‘A’ 也有不可見字符. C中通用轉義字符表示. 後面會講到

轉義字符表. 再深刻了解.

本小節主要講解VS的調試. 先看下面需求.

請求出1+2+....+99 = ? 的和

先看着別人作, 軟件開發是技術活,不是腦力活, 因此多看看就懂了. 一樣構建

[one_project] [ getsum ] [main.c] 

注之後統一採用:[解決方案名稱] [項目名稱] [文件名] 默認規則表述.

這裏須要注意的一下,須要設置啓動項目

#include <stdio.h>

// 配置要加數目 用 _INT_CUT 表明 100
#define _INT_CUT (100)

/*
 * 處理1+2+...+100 = ? 的和
 */
int main(int argc, char * argv[]) {

    int sum = 0;
    int i = 1;
    
    // 開始累加
    while (i < _INT_CUT) {
        sum = sum + i;
        i = i + 1;
    }

    // 打印數據
    printf("sum = %d\n", sum);

    // 等待用戶輸入
    getchar();

    return 0;
}

運行結果是:

那咱們開始打斷點, 用鼠標在最左邊點擊.

按下F5

鼠標滑到斷點處, 會看見這個值. 這就是斷點的意義. F10, F11都是下一步.讓端點跳到下一步.

具體的區別, 本身嘗試用用, 感覺一下. 你會發現別有洞天.經過鼠標滑到這個值得位置, 久能夠

看見這樣可以實時看程序運行是否符合預期.

這就是VS調試的核心. 還有一種經過 printf. 打印出值檢查一下. 上面一句話

// 打印數據

printf("sum = %d\n", sum);

第一個是要輸出的字符串 其中 %d是一個替換變量的佔位符, 用sum的值進行替換.仍是那就話

多寫不明白不要緊,會懂得.

1.3 請記住 hello world

下面是個標準的hello world 程序代碼.

#include <stdio.h>

/*
 * 標準函數通用寫法
 */
int main(void) {

    printf("hello world\n");

    return 0;
}

 另外一種標準寫法

#include <stdio.h>

/*
 * 標準函數通用寫法
 */
int main(int argc, char * argv[]) {

    printf("hello world\n");

    return 0;

}

 上面是C11標準規定兩種main函數寫法. 必定強記, 其它均可以認爲很low. 除了C語言之父那個

年代的代碼. 遵循標準是成長的基石.

1.3.1 註釋詳解 

註釋的本意用好理解的語言是解釋一些特定代碼.在上一輩代碼大師理念中,信仰"

代碼就是註釋". 這也是很''''. 這是創建在無窮的自信和裝逼的基礎上的. 作爲一個

21世紀開始擼代碼, 必定記住, 代碼能夠沒有, 註釋必需要有!!!  註釋就是當時最核心的

思路.

C中又兩種註釋一種是多行註釋以下:

/*
 * 在當前線程池中添加待處理的線程對象.
 * pool        : 線程池對象, sp_new 建立的那個
 * run        : 運行的函數體, 返回值void, 參數void*
 * arg        : 傳入運行的參數
 *            : 沒有返回值
 */
extern void sp_add(threadpool_t pool, vdel_f run, void * arg);

/* */ 包裹的部分就是多行註釋.只須要知道這東西能夠註釋多行文本. 必定要用半角字符. 對於C

程序符號都是用英文字符. 推薦用搜狗輸入法進行下面設置.

 中文使用英文標點, 這樣寫代碼的時候不須要中英文來回切.

還有一種單行註釋 // , 主要看下面示例.

//文本字符串建立的度量值
#define _INT_TSTRING (32)

// 後面就是單行註釋的內容, 程序編譯的時候會忽略. 上面一句話 定義 _INT_TSTRING 這東西

是32, 預編譯的時候會所有替換爲32.

Please be sure to remember, 沒有註釋就充滿了殺戮. 這個世界須要英雄來註釋!

1.3.2 也許這一章是最難的

真的這章是最難的. 軟件開發一共就三部曲. a|hello world 跑起來 -> b|所需語法瞭解

起來 -> c|項目開始堆起來. 而這一章就是 最重要的開始 hello world 跑起來! 完成了這些

那麼C語言學習已經完成1/3.對於hello world 須要作的事是, 蒐集各類相關資料,搭建開發

環境, 熟悉調試環境. 讓官方demo跑起來, 解決遇到的全部奇葩問題.

踏入編程門檻最好的三中先天環境. 1. 遇到早, 下手狠 ,  2. 就是喜歡,  3. 單身, ,

喜歡lol . 這些哪怕只有一條符合, 都不要辜負上天給咱們的先天財富! 當你走上hello world

路上時候, 也是在爲要尋一顆明星.

 

爲要尋一顆明星

1924年12月1日 徐志摩

 

我騎著一匹拐腿的瞎馬,

向著黑夜裏加鞭;

 向著黑夜裏加鞭,

 我跨著一匹拐腿的瞎馬。

 

我衝入這黑綿綿的昏夜,

 爲要尋一顆明星;

 爲要尋一顆明星,

 我衝入這黑茫茫的荒野。

 

 累壞了,累壞了我胯下的牲口,

 那明星還不出現;

 那明星還不出現,

 累壞了,累壞了馬鞍上的身手。

 

這回天上透出了水晶似的光明,

 荒野裏倒著一隻牲口,

 黑夜裏躺著一具屍首。

 

這回天上透出了水晶似的光明!

 

1.4 擴展閱讀 - visual studio編譯流程

   也許是''雜耍'', 看看也好. 這是別人的思路, 請經量忍住, 看完以後再罵傻逼.

 打開 VS 提供命令行. 而且跳轉到指定咱們建的項目下. 以下圖.

經過這個圖線索, 弄出這個環境. 這裏只使用main.c 文件內容, 而且跳轉到這個目錄下.

代碼是用的是 getsum project 中的代碼.目前C的代碼到可運行通常都須要經歷下面幾步.

 

預編譯

處理代碼文件中宏替換, 文件內容導入, 註釋的消除(能夠經過命令不去掉消除) 通用

說法是將本文件中須要用的都弄過來. 不檢查語法錯誤.

命令:

cl  /P  main.c

 將main.c 生成 main.i 預編譯文件.

編譯

將預編譯的文件轉成彙編代碼, 這個階段會檢查語法錯誤.

命令:

 cl  /Fa  /Tc  main.i

del main.obj main.exe

這個命令會作不少事, 目前只考慮編譯生成彙編文件 main.asm.

彙編

這個過程是將編譯獲得的彙編代碼, 編程機器平臺的機器碼 , 二進制文件.

命令:

 ml  /c  main.asm

執行命令以後會獲得 main.obj 機器碼文件.

連接

這個過程將須要的功能機器碼文件聯合起來生成一個可在當前平臺的跑的程序. 對於連接

還有不少類型的連接, 之後遇到自會明白!

命令:

cl  /Fa  /Tc  main.i

del main.exe

cl  main.obj

命令執行以後就獲得了main.exe

 

課外閱讀結束, 能夠的話能夠嘗試經過網絡完成這些問題.

  1) 設置VS 全部文件都左邊都顯示行號, 設置字體爲Lucida Console

  2) 倒着看一遍, 將本文中標準的那兩個主函數, 寫在紙上, 再電腦上再寫一遍,跑起來.

相關文章
相關標籤/搜索