c語言理論學習筆記之序言[K&R]


  時光荏苒,不知不覺已畢業2時間有余,雖然從事技術行業,但是在工作中時常發覺自己的專業技術知識是捉襟見肘,這個對於一個技術開發者着實有點尷尬。反思之余,着實覺得還得從根基下手。c/c++作為高級語言中"最低級"的語言,根基當然是從這里下手咯。於是,我決定從K&R的c語言程序設計開始。。。

  序言。也就是c語言程序設計的入門知識。此章c語言的基礎知識進行了一個概述:

首先是程序的基本語法結構,包含程序的各個組成部分的注解。最重要是的莫過於#include<stdio.h>,它的意思是告訴編譯器本程序中包含標准輸入/輸出庫的信息。也就是引用了一個函數庫,這個函數庫內包含了很多現成的方法,我們如果要使用這些方法,只需簡單的把這個函數庫用#include引入即可,以此類推,其他的函數庫也是如此。<stdio.h>所提供的printf()/scanf()函數對我們非常的重要,以后的程序調試工作基本上全靠這個函數。

  變量與算法運算。此章進一步向我們展示了c語言中的其他成員,如注釋、聲明、變量循環以及格式化輸出等。這讓一些初學者從整體來把握c語言程序。此章最重要的是告訴讀者c語言的一些數據類型,即:char、int、float、double。其中int可分為short int、int、long int,如果按范圍可再分為signed和unsigned(有符號和無符號)。float、double也可按上述分類。

  這里還介紹了printf()函數的具體功能,即為輸出格式化。該函數的第一個參數是待打印的字符串,其中字符串中的百分號(%)代表它的每一個參數要替換的位置,其中%d按照十進制整形打印,%s打印一個字符串,%f按照浮點數打印,這里也可以更進一步指定其位數,如%3.4f即為打印的數至少占3個字符寬,小數后面有4位數字。scanf()函數則是獲取從鍵盤輸入的字符。%%,左邊的%表示轉義,表示%本身。

  符號常量即用#include來定義一個特定的字符串,以便在程序中很方便的使用,這樣處理還可以讓我們的代碼更加的易讀和直觀。如:#define MAXLENGTH 100 定義了一個最大長度的上限。

  字符輸入/輸入。標准庫提供的一次讀/寫一個字符的函數即為getchar()和putchar()。putchar()函數的主要應用則是從文本流中讀入下一個輸入字符,並將其作為結果返回,處理文本時尤為有用,可用於處理文本復制、字符計數、行計數以及單詞計數等。

  數組。一個非常實用的東東,此章則是通過一個簡單的例子展示了數組的部分功能。要記住,在c語言中數組下標總是從0開始,數組下標可以是任何整形表達式,包括整形變量和常量。

  if (c >= '0' && c<= '9') 判定該字符是否為數字,如果是數字則其對應的數值為c - '0'。對於字母也是一樣的,如果要一個字符是否是字母則可寫:if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))。

  函數。為了便於計算而封裝的一個方法,這樣做還可以使程序更加的清晰易讀。要使用一個函數首先得聲明即為函數原型,然后在main()函數的下方進行定義,函數原型與函數定義中參數名不要求相同,而函數原型的參數是可選的,可只寫類型,不寫參數名稱。

  參數-傳值調用。在c語言中所有的參數都是“通過值”傳遞的。也就是說,傳遞給被調用函數的參數值存放在臨時變量中,而不是存放到原來的變量中。此時被調用的函數不能直接修改主調用函數中變量的值,如果要修改則可把參數聲明為指針類型,從而可以間接的修改調用函數中的變量值。注意:數組作為函數參數時,傳遞給函數的值是數組起始元素的位置或地址----它並不是復制數組元素本身。因此,在被調用函數中,可以通過數組下標訪問或修改數組元素的值。

  字符數組。此數組是c語言中最常用的數組類型。應掌握C語言中字符數組的儲存規則,即字符數組是以‘\0’(空字符)為結束標志。

  外部變量與作用域。在函數內部定義的變量即為局部變量,又稱自動變量,整個函數即為自動變量的作用域,在函數執行完畢時消失。在函數外部定義的變量即稱為外部變量,且只能定義一次。定義后編譯程序將為它分配存儲單元。在每個需要訪問外部變量的函數中,必須聲明相應的外部變量,此時說明其類型。聲明時可以使用extern語句顯示聲明,也可以通過上下文進行隱式聲明。通過上下文進行聲明是指在程序的最開始的地方定義變量,下面的函數即可不受限制的調用此外部變量。如果程序包含在多個源文件中,而某個變量在file1文件中定義,在file2和file3文件中使用,那么在文件file2和file3中就需要使用extern聲明來建立該變量與其定義之間的聯系。人們常把變量和函數的extern聲明放到一個單獨的文件(頭文件)中,並在每個源文件的開頭使用#include語句把所要使用的頭文件包含進來,后綴.h約定為頭文件名的擴展名。

  最后需要搞清楚“聲明(declaraton)”和“定義(define)”這兩個詞的區別:“聲明”指的是說明變量的性質,但並不分配存儲單元;“定義”表示創建變量或分配存儲單元。外部變量雖然訪問時很方便,但是且不可濫用,過分的依賴外部變量會導致一定的風險,因為它會使程序中的數據關系模糊不清----外部變量的值可能會被意外或不經意地修改,而程序的修改又變得十分困難。

  到這里,C語言的傳統核心部分知識已經看完了,收獲頗豐。最最重要的就是實踐,接下來就是一步一個腳印地去編寫每一個程序,按部就班的對每一個程序都進行調試。

  本文純屬本人在學習c語言過程中的手記,如果有錯誤的地方,還請各位看客大大不吝賜教,感謝!!

                   猛擊這里查看序言習題答案及代碼示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM