c語言中經常出錯,混淆的地方

、指針相關

*p++,由於++*同優先級,結合方向自右而左,等價於*(p++)

*(p++)*(++p)作用不同。若p的初值爲a,則*(p++)等價a[0]*(++p)等價a[1]

(*p)++表示p所指向的元素值加1

 

如果p當前指向a數組中的第i個元素,則 

*(p--)相當於a[i--]

*(++p)相當於a[++i]

*(--p)相當於a[--i]

、輸入

輸入字符的格式與要求不一致。

在用“%c”格式輸入字符時,“空格字符”和“轉義字符”都作爲有效字符輸入。

scanf("%c%c%c",&c1,&c2,&c3);

如輸入a b c,字符“a”送給c1,字符“ ”送給c2,字符“b”送給c3,因爲%c只要求讀入一個字符,後面不需要用空格作爲兩個字符的間隔。

、變量定義

1、定義數組時誤用變量。

int n;

scanf("%d",&n);

int a[n];

數組名後用方括號括起來的是常量表達式,可以包括常量和符號常量。即C不允許對數組的大小作動態定義



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章