獲得字串長度:strlen(s),需要標頭檔案#include
判斷兩個字元是否相等用==
判斷兩個字串相等:
if
(strcmp
(s1,s2)==0
),strcmp
(s1,s2)
相等返回0
想要輸入帶空格用gets(s)
標頭檔案stdlib.h中的方法atoi可以實現字串轉數字"996"轉為996
#include
intmain()
結果2,3
c語言右結合性,先執行--a,再執行a++
do while語句先執行在判斷
在ascii表中a和a相差32
多個數字呼叫函式,且沒有接收值時,如fun(a,b,c),需要用指標來改變大小改為fun(&a,&b,&c)
陣列呼叫函式可以直接改變大小也不需要接收值fun(a),a為陣列
int x=10;
printf
("%d,%d\n"
,x--
,--x)
;printf
("%d"
,x);
//輸出9,8
在switch(i++)先判斷switch(i),再++
#include
func
(int a,
int b)
main()
//輸出21
呼叫函式時fun(a++),傳的引數是a的值,不是a+1的值。
strcpy複製函式,將原字串覆蓋
strcat連線函式,在字串後面連線
int a=
;f(a+1);
表示傳的引數從第二個元素開始即 7,9
,9,11
,34
str2[3]
[5]=
;puts
(str2[1]
) 即輸出hi
字串讀取時若遇到人為賦值』\0』後面的都不進行讀取
char a[4]
[10]=
;int i =3;
char
(*p)[10
];for(p = a; p < a +
4; p++
, i--
)printf
("%c",*
((*p)+ i)
);
*p表示a[0][0]的位址**p表示a[0][0]
p+1表示a[0][1]的位址,(*p+1)表示a[0][1]
*p++表示a[1][0]的位址
unsigned將數字型有符號類轉換成無符號類,如int範圍 -231~231-1轉換為0~2^32
int x=10;
int y=10;
printf
("%d,%d\n"
,x--
,--y)
;輸出10
,9
#include
intmain()
0x表示16進製制,0表示8進製,>>表示右移
printf
("%d\n",(
0,0)
);printf
("%d\n",(
0,1)
);printf
("%d\n",(
1,0)
);printf
("%d\n",(
1,1)
);
逗號表示式的結果是用逗號分開的最後乙個表示式的 值
取反運算:a=-(a+1)即5=-6
#include
intmain()
printf
("%*c%.*s\n",3
,' ',4
,"*************");
等價於printf
("%3c%.4s\n"
,' '
,"*************");
//%.4s擷取字串長度為4
輸出3個空格4個*
#include
intmain()
總長度為50,字元為4;即46個空格+
4個字元(a bo)
在輸出格式描述 「%m.ns」 中,m 是輸出總長度, n 是實際字元的個數, 這裡 m 沒有給出,則輸出總長度就是實際輸 出字元的個數。
#include
intmain()
輸入1234567890
輸出a=
12 b=
345
fabs(a)取絕對值函式
#include
intmain()
//a[1]=10
//若a[1]=x++,x+3,x+7,則相當於a[1]=x;x++;x+3;x+7;
逗號運算子從左開始運算,結果只保留最後乙個,並賦值。
#include
void
fun(
int*s)
while
(++j<2)
;}intmain()
;for
(k=1
;k<
3; k++
)fun
(a);
for(k=
0;k<
5; k++
)printf
("%d"
,a[k]);
}//輸出35745
static在函式結束前只執行一次
#include
void
num(
)int x,y ;
intmain()
//輸出5,25,main 函式和 num 函式中都說明了變數 a 和 b,由於它們是內部變數,所以它們分別在說明它們的函式內有效。外部變數 x 和 y 在函式 num 之後被說明,而在 num 函式中又要引用它們, 所以在 num 函式中用關鍵字 "extern"說明變數 x和 y 是乙個外部變數,也就是通知計算機這兩個變數在 fun函式以外被說明,此處不是定義兩個 int 型變數。
#include
intmain()
//輸出12
#include
intmain()
;int
*p=a[0]
; p+=6
;printf
("%d "
,*p)
;/* ① */
printf
("%d ",*
(*(a+6))
);/* ② */
printf
("%d ",*
(a[1]+
=2))
;/* ③ */
printf
("%d",*
(&a[0]
[0]+
6));
/* ④ */}a)
7777 b) ②句語法錯誤 c) ③句語法錯誤 d) ④句語法錯誤
//②句沒有語法錯誤,但是 a+6 指向陣列之外,因為 a是 a[0]的位址, a+1 是 a[1]的位址, a+2 是 a[2]的位址,顯然陣列 a 沒有 a[6]分量。③句錯誤,因為 a[1]是位址常量,它是 a[1][0] 的位址,對於位址常量是不可以進行賦值運算的。
正確**:
#include
intmain()
;int
*p=a[0]
; p+=6
;printf
("%d "
,*p)
;printf
("%d ",*
(a[0]+
6));
printf
("%d ",*
(a[1]+
2));
printf
("%d",*
(&a[0]
[0]+
6));
}
#include
intmain()
//輸出2 2
p始終指向a的位址,a的值變化,位址不變。
#include
char
*pp[2]
[3]=
;int main (
)① a) a b) d c) i d) m
② a) a b) d c) i d) m
③ a) h b) l c) q d) w
④ a) k b) o c) u d) z
⑤ a) ijkl b) mnopqr c) stuvw d) xyz
//daddb
指標難點 易錯點
voidf char c intmain f c 這裡的f char c 指向指標的指標 所以呼叫時一定要 使用指標 c 3 定義指標陣列 c 第乙個指標變數的位址。指標的位址 用指向指標的指標存放 二 例如 int a 3 4 ptr2是乙個指向 int 的指標,即ptr2的型別和 ptr是一樣的...
C語言易錯點
c語言易錯點 1.每個c語言程式中main函式是有且只有乙個的。2.演算法可以沒有輸入,但必須要有輸出。3.在函式中不可以再定義函式。4.break可用於迴圈結構和switch語句。5.break和continue的區別在於前者是跳出迴圈,後者是結束本次迴圈。6.逗號的運算子的級別最低。7.c語言對...
C語言易錯點
1.c程式的原始檔拓展名為.c 2.include 是c語言的預處理指令之一,所謂預處理,就是在編譯之前做的處理,預處理指令一般以 開頭 3.乙個c程式中一定會有乙個main函式,也只能有乙個main函式。main函式是整個c程式的入口。1.在編譯前先執行 include指令,拷貝stdio.h的內...