c語言易錯
Ⅰ 《c語言進階重點、難點與疑點解析》epub下載在線閱讀,求百度網盤雲資源
《C語言進階》(牟海軍)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/11YZvmBLIu4RBD705MKRCCQ
書名:C語言進階
作者:牟海軍
出版社:機械工業出版社
出版年份:2012-7
頁數:347
內容簡介:
C語言是編程語言中的一朵奇葩,雖已垂垂老矣,但卻屹鏈余扮立不倒,誕生了數十年,仍然是最流行的編程語言之一。C語言看似簡單,卻不易吃透,想要運用好,更是需要積淀。本書是一本修煉C程序設計能力的進階之作,它沒有系統地去講解C語言的語法和編程方法,而是只對C語言中不容易被初學者理解的重點、難點和疑點進行了細致而深入的解讀,揭露了C語言中那些鮮為普通開發者所知的秘密,旨在讓讀者真正掌握C語言,從而編寫出更高質量的C程序代碼。
全書一共11章:第1章重點闡述了C語言中不易被理解的多個核心概念,很多初學者在理解這些概念時都會存在誤區;第2~8章對預處理、選擇結構和循環結構的程序設計、數組、指針、數據結構、函數和文件等知識點的核心問題和注意事項進行了講解;第9章介紹了調試和異常處理的方法及注意事項;第10章對C語言中的若干容易讓開發者誤解誤用的陷阱知識點進行了剖析;第11章則對所有程序員必須掌握的幾種演算法進行了詳細的講解;附錄經驗性地總結了如何養成良好的編碼習慣,這對所有開發者都尤為重要。
本書主要內容:
堆和棧、全局變數和局部變數、生存期和作用域、內部函數和外部函數、指針變數、指針數組和數組指針、指針函數和函數指針、傳址和傳值、遞歸和嵌套、結構體和共用體、枚舉、位域等較難理解的核心概念的闡述和對比;
預處理中的疑難知識點,包括文件的包含方式、宏定義及其常見錯誤解析、條件編譯指令和#pragma指令的使用等;
if、switch等選擇結構語句的使用棚灶注意事毀汪項和易錯點解析;
for、while、do while等循環結構語句的使用注意事項和易錯點解析;
循環結構中break、continue、goto、return、exit的區別;
一維數組、二維數組、多維數組、字元數組、動態數組的定義和引用,以及操作數組時的各種常見錯誤解析;
不同類型的指針之間的區別,以及指針的一般用法和注意事項;
指針與地址、數組、字元串、函數之間的關系,以及指針與指針之間的關系;
枚舉類型的使用及注意事項,結構體變數和共用體變數的初始化方法及引用;
傳統鏈表的實現方法和注意事項,以及對傳統鏈表實現方法的顛覆;
與函數參數、變參函數、函數調用、函數指針相關的一些難理解和容易被理解錯的知識點解析;
文件和指針的使用原則、技巧和注意事項;
函數調用和異常處理的注意事項和最佳實踐;
與strlen、sizeof、const、volatile、void、void*、#define、typedef、realloc、malloc、calloc等相關的一些陷阱知識點的解析;
時間復雜度、冒泡排序法、選擇排序法、快速排序法、歸並排序法、順序排序法、二分查找等常用演算法的詳細講解;
良好的編碼習慣和編程風格。
作者簡介:
牟海軍 資深C語言開發工程師,鍾愛C語言,對C語言有較深入的理解和研究,實踐經驗較為豐富;喜歡研究演算法,諳熟各種常見演算法和經典演算法,頗有心得;擅長嵌入式Linux開發,以及使用QT進行嵌入式開發;活躍於CSDN等技術社區,是CSDN的推薦博客專家。
本書微群: http://q.weibo.com/943166
Ⅱ c語言中從鍵盤輸入數據的規律和容易出錯的地方
以下為你收集的c語言輸入數據要點及注意事項
說明: (1)數據輸入是相對計算機內存
(2) 數據輸入使用標准庫函數完成
(3) 數據輸入標准庫函數的原型聲明在stdio.h頭文件中
1、函數getchar函數的功能是從鍵盤上輸入一個字元。
其一般形式為:字元變數=getchar();
getchar函數只能接受單個字元,輸入數字也按字元處理。
輸入多餘的字元存入到鍵盤的緩沖區,若有下一個getchar函數語句,直接從鍵盤的緩沖區讀取。
2、字元串輸入函數gets 格式:
gets (st)
功能:從鍵盤上輸入一個字元串,本函數得到一個函數值,即為該字元數組的首地址。
注意:gets函數並不以空格作為字元串輸入結束的標志,而只以回車作為輸入結束。這是與scanf(「%s」,…)函數不同的。
3、scanf()函數的一般形式
scanf(「格式控制字元串」,地址列表);
地址列表,用來接受數據各變數的地址。
變數的地址表示如下: & 變數名 ,別忘了取地址運算&
其格式字元串的一般形式為:
%[*][輸入數據寬度][長度]類型字元
其中有方括弧[]的項為任選項。各項的意義如下:
1) 類型字元
表示輸入數據的類型,其格式符和意義如下所示:
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串
2) 「*」符
用以表示該輸入項讀入後不賦予相應的變數,跳過該輸入值。
如 scanf("%d %*d %d",&a,&b);
輸入為:1 2 3 把1賦予a,2被跳過,3賦予b。
3)寬度
用十進制整數指定輸入的寬度(即字元數)。
例如: scanf("%5d",&a);
輸入: 12345678
只把12345賦予變數a,其餘部分被截去。
又如: scanf("%4d%4d",&a,&b);
輸入:12345678將把1234賦予a,而把5678賦予b。
4)長度 長度格式符為l和h,l表示輸入長整型數據(如%ld)和雙精度浮點數(如%lf)。h表示輸入短整型數據。
例如:
main()
{ inta;
long b;
double x;
scanf(「%d%ld%lf」,&a,&b,&x);
printf(「a=%d, b= %ld,x=%lf」,a,b,x);
}
使用scanf函數還必須注意以下幾點:
(1)scanf函數中沒有精度控制。
如:scanf(「%5.2f」,&a); 是非法的。
(2)scanf中要求給出變數地址,
如: scanf(「%d」,a);是非法的。
(3)在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔則可用空格,TAB或回車作間隔。
例如:scanf(「%d%d」,&a,&b);
輸入: 12 10 回車
或 12 回車 10 回車
(4)在輸入字元數據時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。
例如:
scanf("%c%c%c",&a,&b,&c);
輸入為:d e f 則把'd'賦予a, 『』'賦予b,'e'賦予c。
只有當輸入為: def時,把'd'賦於a,'e'賦予b,'f'賦予c。
如果在格式控制中加入空格作為間隔,
如 scanf ("%c %c %c",&a,&b,&c);
輸入時各數據之間可加空格。
(5)如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。
例如:
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符「,」作間隔符,故輸入時應為: 5,6,7
又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
則輸入應為: a=5,b=6,c=7
(6)如輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果可能不正確。
void main()
{ inta;
printf("inputa number\n");
scanf("%d",&a);
printf("%ld",a);
}
以上總結比較全面,希望能幫到你。
Ⅲ 如何高效的學好C 語言啊
美河提供.C.精髓.軟體工程方法.pdf,免費下載
鏈接:https://pan..com/s/17Q0JIVCI98FVDaRaisgA3A
C++是一種大型而復雜的語言,其設計目標是作為一種通用的工程語言。 本書分4個部分共19章,不僅詳細介紹了C++語言的基本語法,而且講解了 C++的高級應用(如虛函數、模板、異常等),並通過大量詳盡的代碼表達了有關軟體工程及維護的觀點。