程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C和指針 (pointers on C)——第一章:快速上手

C和指針 (pointers on C)——第一章:快速上手

編輯:關於C

不太苟同大多數人認為很多程序員沒有幾個學C學的好的,那就多看看這本書。

本人只是作為讀書筆記來寫。有時候會附帶一些題目和解答。

開通此類專欄,既為敲磚引玉,也為自勉,望鼓勵!


第一章:快速上手

我每次都是復習的來寫。我想是這一章,哪怕是上手也需要有一定的C基礎。


總結:提出了stdio.h中一些基本的函數,如scanf(),printf(),getchar(),putchar(),gets(),puts()等io函數。
關於NULL和NUL的區別也說了一些。
NUL也就是字符串中的截尾字符'\n',並不存在與預處理中。
NULL是stdio中定義好的字符,表示指針為空,為整型0。
EOF也是stdio種定義好的字符,表示為指針指向文檔的結尾。


警告:
1、在scanf函數的標量參數前並未添加&字符。
首先是標量參數,舉個例子,數組元素參數是標量參數。它通過值傳遞來通過main和函數間傳遞。
&符號在這裡是尋址。如果是數組參數,它本身是個地址,所以就不需要做尋址運算了。
2、機械地把printf函數的格式代碼照搬於scanf函數。
3、在應該使用&&操作符的地方誤用了&操作符。
一個是邏輯操作符,一個是尋址。一般細心都可以避免這個問題。
4、誤用=操作符而不是==操作符來測試相等性。
同上,不過這個問題好像犯錯的人更多一些。
尤其是在if、while判斷中經常出現。
如:while(pointer==EOP)


編程提示:
1、使用#include指令避免重復聲明。同時在#include 裡面放置函數的原型。
2、使用#define 指令給常量命名。
3、使用數組下標前先檢查他們的值。
如:ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
這是個好習慣。
4、在while/if表達式中蘊含賦值操作。
如:
ch = getchar();
while(ch != EOF && ch != '\n')
ch = getchar();
就可以寫成:
while((ch = getchar()) != EOF && ch != '\n')
;
這樣,就可以消除冗余語句。你可以理直氣壯地聲稱這種可讀性非常差的代碼技巧應該避免使用。我也可以理直氣壯地告訴你,這是因為你對C不是很熟。
大牛們在讀代碼的時候根本不會出現任何問題。
5、如何編寫一個空循環體。
while((ch = getchar()) != EOF && ch != '\n')
;
這個分號是非常重要的,否則下一句不相關的語句就會被拖入while循環。
6、如何進行檢查,確保數組不越界。
比如在存數組中,必需包括以下:
1、如果輸入行結束或者輸入行數組已滿,跳出循環break;
2、如果輸出行數據空間不夠,只賦值可以容納的數據;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved