《C和指標》讀書筆記(1)

來源:互聯網
上載者:User

1.scanf()的傳回值是函數成功轉換並儲存於參數中值的個數!
2./*scanf 不會讀取該行中最後一個它不需要讀取的值--分行符號'/n'
,所以該行中的剩餘部分就會留在那裡等待被讀取。這個分行符號或者其他scanf不想讀取的字元就會被解釋成下一行的開始資料。所以用下面這種方法來讀取並丟棄這些剩餘字元。
*/

int ch;  /*EOF在stdio.h中定義為int,所以為了防止ch = EOF將int強轉為char,
也將ch聲明成int型*/
while((ch = getchar()) != EOF && ch != '/n'){
 ;
}

3.注意事項:避免越界訪問數組
*在使用下標前先檢查它們的值;(如果下標是由在鍵盤由使用者輸入的,要加上後面code)
int array[] = {0,1,2};
scanf("%d", &i);
if(i < sizeof(array)){
 array[i]; //這樣再引用以i為下標的數組;
}

*在while or if 運算式中蘊含的賦值操作;(在fork一個進程時要小心用這種技巧,不要 偷懶,在while of if 前就先將fork的傳回值賦值操作。)
*始終要進行檢查,確保數組不越界;

4.strlen()的個數不包含'/0'

5.可以把字串常量賦給一個指向字元的指標,這個指標指向這些字元所儲存的地址。
但是,你不能把字串常量賦給一個字元數組,因為字串常量的直接值是一個指標,而不是字元本身。
strcpy(char *des_ptr, const char *src_ptr) //段錯誤,對指標變數賦了一個字元,而不是一個地址(指標變數)。 des_ptr = src_ptr; //right,但是只是在記憶體中只有一段字串,只是二個指標都指向了這個字串常量,不是在記憶體中的一個新的地址空間複製了一段src_ptr的字串。 
strcpy(char des_ptr[], const char *src_ptr)
/***********************************/

src_ptr = strchr(src_ptr, 'a');
strcpy(char des_ptr[], const char *src_ptr); //ok!

6.修飾符,範圍
*不要在嵌套的代碼塊中出現相同的變數名!

7.避免將函數的型參和函數的局部變數重名!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.