C 語言小知識點
1.自增運算符與自減運算符:
(a) b=a++ —— 先賦值後運算 (自增);
(b) b=a- - —— 先賦值後運算(自減);
· (c) b=++a —— 先運算(自增)後賦值;
(d) b=--a —— 先運算(自減)後賦值;
大家可以運行下這個程序,看是什麼結果:
main()
{
int i=10;
i=i-- - --i*(i=-3)*i++ + ++i;
printf("i=%d\n",i);
}
2.當用戶本想輸入兩個數據,而只輸入了一個數據就跳過了:
用戶一般輸入數據爲scanf();而使用scanf()後應有一個良好的習慣,那就是清空緩存區,
清空緩存區就可以避免輸入了一個數據卻跳過了下一個要輸入的數據。
清空緩存區:getchar(),fflush(stdin),flushall();
例如
int a;
scanf("%d",&a);
getchar();
//fflush(stdin);
//flushall();
3. 交換a,b的值(a) t=a;
a=b;
b=t;
(b) a=a+b;
b=a-b;
a=a-b;
(c) (位異或)
a=a^=b^=a;
b=a^=b;
5.三目運算符比較大小
max=(a>b)?a:b
6. 數組與指針使用時要先定義,然後初始化
7.數組算法題(不考慮邏輯題)無非也就是數組元素的插入與刪除,學習時應好好掌握這兩點。
8. 字符串長度計算(sizeof,strlen)
void func(char *a)
{
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
}
int main(void)
{
char a[]="Hello World";
func(a);
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
return 0;
}
這個程序的運行結果是4,11,12,11.
首先4的由來是sizeof(a),此時a爲指針變量,指針存的是地址,地址爲int型的,所以不管什麼類型的指針(float,char)
長度都爲sizeof(int);
strlen(a)是計算字符串長度的函數,爲10。
至於12的由來是sizeof(a),這裏a是字符數組”Hello World“字符串末尾系統會自動加上‘\0’,所以sizeof(a)爲12.
9.使用鏈表時應注意這幾個問題:
類型:該鏈表是單鏈表還是雙鏈表還是其他。
開頭:該鏈表是否有頭結點;
結尾:鏈表結尾是否讓其=NULL;(讀取好讀)