在給變量分配內存時,很可能這段內存存在以前其他程序使用留下的值。當使用VC編譯器,若編譯器發現沒有給變量賦值而使用,就會返回一個以“85”開頭的很大的數字(此時該段內存中為一個垃圾數,為了避免出現較常規的數而使程序員誤以為自己已給變量進行過初始化),這個“85”開頭的數叫“填充字”,提醒程序員沒有初始化變量。
C代碼運行後:
變量對應於內存中的一個存儲單元,變量的本質是 "內存中一段存儲空間"
簡單一元二次方程示例:
C代碼
1 # include <stdio.h> 2 # include <math.h> 3 4 int main(void) 5 { 6 //聲明變量 7 int a = 1; // = 是賦值的意思 8 int b = 5; 9 int c = 6; 10 double delta; //保存解的個數 11 double x1,x2; //保存解 12 13 delta = b*b - 4*a*c; 14 15 if(delta>0) { 16 x1 = (-b + sqrt(delta)) / (2*a); 17 x2 = (-b - sqrt(delta)) / (2*a); 18 printf("該一元二次方程有兩個解, x1 = %f, x2 = %f\n", x1, x2); 19 }else if(delta==0){ 20 x1 = x2 = (-b) / (2*a); 21 printf("該一元二次方程有一個解, x1 = x2 = %f\n", x1); 22 }else{ 23 printf("無解"); 24 } 25 return 0; 26 } 27
大綱筆記:
C語言概述
1、為什麼學習C語言
1)C的起源和發展
第一代語言:機器語言01代碼
第二代語言:匯編語言就是簡單的助記符ADD
第三代高級語言:結構化語言(面向過程)C,Fortran用於
科學計算Basic演變為VB,Pascal
用於教學。
面向對象(OO)C++,java(SUN改造過),
C#(微軟改造的),後兩種都是針
對C++改造的。因為C++比較復雜。
結構化語言有缺陷:數據和操作分離。如果你學會C++
那麼剩下都不用學了。因為它都包括了面向過程和對象
2)C的特點
優點:
代碼量小(WPS) 速度快 功能強大(寫操作系統)
缺點:
危險性高:(同樣的程序java中就會報錯)可以隨便寫
開發周期長:因為它是面向過程語言,10萬行代碼以上容易崩潰
可移植性不強:因為java的可移植性太強了。C的話兩台機器跑
起來可能不一樣。
3)C的應用領域
系統軟件開發:
操作系統:三大
驅動程序:主板驅動、顯卡驅動、攝像頭驅動
數據庫:DB2,Oracle,Sql server
應用軟件:
辦公軟件:WPS
圖形圖像多媒體:ACDSee,PS,MediaPlayer
嵌入式軟件開發:智能手機,掌上電腦
游戲開發:2D,3D游戲(CS整個引擎都是純C。魔獸不是
4)C的重要性
有史以來最重要的語言
所有大學工科理科學生必修課程
系統軟件都是用它開發
合格黑客必須掌握
程序員必須熟練
大企業、外企招聘必考
為數據結構,C++,java,c#做准備
2、怎樣學習C語言
每一講分四次課
前兩節課為理論課,講授理論知識
後兩節課為上機課,在機房完成當堂練習
要去:
當堂練習必須在兩節上機課中完成
機房隨時有輔導老師輔導
老師檢查後方可離開
途徑:多思考,多上機
目標:能看懂程序,能調試程序,自學能力要很強
其實就是犯錯誤的過程,肯定會有錯誤,全都出完了,就學好了。
參考資料:
譚浩強《C語言程序設計》清華 絕對入門經典(就是自己能看懂)
《C Primer Plus》人民郵電 60元 語法
《C和指針》 人民郵電 65元
在想變成高手看:
《C專家編程》 絕版
《C陷阱與缺陷》人民郵電 30元
3、學習的目標
了解程序語言及發展歷史
熟練掌握C語言的語法規則
掌握簡單的算法
理解面向過程的思想,這非常有助於將來對面向對象思想的學習
能看懂程序
會調試程序
掌握將大問題轉化為一系列小問題來求解的思想
為將來學習C++,數據結構,C#,java打下良好的基礎
4、常見問題答疑
1、學習java為什麼建議先學C語言
a)學習C就是學java,因為C語言至少80%的語法知識都被
java繼承過來了。
b)C是面向過程語言的代表,學好C有助於學習java中面向
對象的思想
c)學好C中的指針是理解java中引用的基礎!如果不懂指針
就不可能對java中的引用由深刻的理解,而引用是java中
一個最基本但又十分重要的概念。
2、沒學過計算機專業課程能夠學懂C語言
有郝斌老師在怕什麼?
3、英語和數學不好能學好C麼?
如果懂更好,如果不懂不影響對其的學習。數學知識只有在你
研究高深算法的時候才需要。
5、課程計劃
共23講
C語言簡介
第一講 基本編程知識 1講
第二講 數據類型 1講
第三講 運算符和表達式 1講
第四講 流程控制 4講
第五講 函數 2講
第六講 數組 1講
第七講 指針 4講
第八講 變量的作用域和存儲方式 1講
第九講 擴展數據類型 1講
第十講 專題:
字符串的處理 1講
進制轉換 1講
補碼 1講
動態內存分配 1講
綜合應用:鏈表的使用 2講
6、舉例子:一元二次方程
C語言編程預備知識
1、cpu 內存條 硬盤 顯卡 主板 顯示器之間的關系
2、HelloWorld程序如何運行起來的
3、什麼是數據類型
編程受限就要考慮數據,怎樣去保存它,就和數學上的數字一樣
基本數據類型:
整數:
整型int 4 短整型short int 2, 長整型long int 8
【浮點數(計算機內不能定點存儲)】實數
單精度浮點數float 4
雙精度浮點數double 8
字符
char
復合類型數據:(把基本類型復合起來)
結構體
枚舉
共用體
4、什麼是變量
方便找到一個和空閒內存單元一一對應的代碼。
避免了程序員自己去找空閒單元的編號,由操作
系統完成。
變量的本質就是內存中的一段存儲空間。
5、cpu 內存條 VC6 操作系統之間的關系
VC6向操作系統請求在內存中開辟一段內存,VC在使用這些內存
完成程序運行
6、變量為什麼要初始化
所謂初始化就是賦值的意思。那個很大的值其實是填充字很大
真實的值是隨機值,是上一個軟件使用過遺留下的,這個很大
的填充值就是為了提醒你這個值未被初始化。
7、如何定義變量
8、什麼是進制
9、常量在C語言中是如何表示的
10、常量是以什麼樣的二進制代碼存儲在計算機中的
tips:
1、html是借助於浏覽器運行的
2、C語言編寫好的代碼是借助於VC6運行的
3、要想改變dos框的屬性,右鍵單擊標題欄
4、機器語言速度最快,最慢高級語言,C又比java,C#快
5、Basic在計算機中有簡化的意思
6、B語言寫出了世界上第一個操作系統UNIX,光盤就有十幾張很大
主要用在大型機、商務機。因為其穩定,不可能用Windows,因
為容易掛,不穩定。
7、B語言的創始人的同事擴充了B得到了C語言並且用此寫了UNIX第五版
這個系統流行了起來所以C語言也流行了起來。UNIX開源的,你要改
就要學習C語言。
8、C語言中必學的是函數和指針。94年C99標准一直用到今天
9、金山公司一直最掙錢的就是WPS。政府訂購。他的一個強大功能是可以
轉成pdf格式的,microoffice沒有此功能。
10、WPS安裝包很小,因為它是用C語言寫的內核。
11、三大操作系統windows(內核用C外殼用C++),unix和linux都是用
C寫的。因為它很快。硬件由操作系統控制。以前在dos下可以直接
控制硬件,現在必須通過操作系統。
12、C可以訪問硬件,指針。java沒有指針。
13、招聘現在基本分三塊:c/c++,java,c#.前者工資最高。
14、蠕蟲病毒,C語言有個gets()函數,他是向硬盤寫東西,無長度限制
後來就改用fgets()有了限制,這樣就不上了漏洞。
15、世界上絕大多數病毒都只能破換軟件,只有一個能破換硬件的。
16、也可以用C語言編一個木馬,它是背地裡運行的,慢慢地就死機了
17、學數據結構最好用C語言學習
18、入門最基本的方法就是C語言入手。
當你成為C語言的高手,那麼你就很容易進入到操作系統的平台裡面去;
當你進入到操作系統的平台裡面去實際做程序時,就會懂得進行調試;
當你懂得調試的時候,你就會發現能輕而易舉地了解整個平台的架構。
這時候,計算機基本上一切都在你的掌握之中了,沒有什麼東西能逃得
出你的手掌心。
-----《編程箴言》梁肇新,超級解霸作者
19、王爽寫的匯編的入門書也不錯
20、C語言32個關鍵字作為保留。不能重做其他定義。
21、哲學是你對於世界的思考,數學又是其他一切學科的計算基礎。
22、函數可以體現出面向對象和面向過程的區別。
23,任何語言的流程都是一樣的。
24、動態內存分配學過之後才能理解數據結構。
25、VC6完全兼容C,所以你就選C++ Source File
26、先把硬盤上的數據存放在內存條上然後cpu在處理,因為它不能
直接處理硬盤數據。
27、主板就相當於為大家提供了一個怎樣互相配合的環境
28、點感歎號的那個標志是運行.exe,這個是有cpu運行的。所有的運行都是cpu
29、在VC6中輸入的字符和在記事本中是無區別的,通過編譯鏈接產生exe
30、win98 winme是可以直接控制硬件的(編程序)。2000以後就只能操作系統控制
31、C的一個核心思想就是不限制程序員編寫他想編寫的內容。
32、C裡面是沒有這樣一個數據類型來直接存放字符串的,C++和java都有
33、出錯的位置和原因不一定就是真的,有可能在上下行找
34、我們硬件上的狀態肯定是0、1不可能存在第三種狀態,重啟就是全0.
35、內存釋放是指使用權限被收回
36、軟件在運行期間,該軟件所占空間不再分配給其他軟件,當軟件運行完畢
之後,操作系統將收回該內存空間,以便在分配給其他軟件使用。
該文轉載至http://duchengjiu.iteye.com/blog/1826488