-
获得字符串长度:strlen(s),需要头文件#include<string.h>
-
判断两个字符是否相等用==
-
判断两个字符串相等:
if(strcmp(s1,s2)==0),strcmp(s1,s2)
相等返回0
-
想要输入带空格用gets(s)
-
头文件stdlib.h中的方法atoi可以实现字符串转数字"996"转为996
-
#include<stdio.h> int main(){ int a=3; printf("%d,%d",a++,--a); } 结果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 <stdio.h> func(int a,int b) { int c ; c=a+b; return(c); } main() { int x=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r) ; }//输出21
调用函数时fun(a++),传的参数是a的值,不是a+1的值。
-
Strcpy复制函数,将原字符串覆盖
-
Strcat连接函数,在字符串后面连接
-
int a[]={1,7,9,9,11,34}; f(a+1); 表示传的参数从第二个元素开始即 7,9,9,11,34
-
str2[3][5]={"defg","hi\0j","klm"}; Puts(str2[1]) 即输出hi 字符串读取时若遇到人为赋值’\0’后面的都不进行读取
-
char a[4][10] = {"1234", "abcd", "xyz", "ijkm"}; 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 <stdio.h> int main() { int x=0x02ff,y=0x0ff00 ; printf("%d\n",(x&y)>>4|0x005f); }
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 <stdio.h> int main() { int a=111 ; a=a^00;//若a是整型变量,则a^00表示变量a与八进制数0进行“异或”运算。因为“异或”是按位进行的,相同为0,相异为1,所以a^00的结果是什么意义都没有,a还是a。若a不是整型变量,则a^00是非法操作,编译都过不了 printf("%d,%o\n",a,a) ;//%o表示以8进制输出,%x表示以16进制小写字母输出,%X表示以16进制大写字母输出 }
-
printf("%*c%.*s\n",3,' ',4,"*************"); 等价于printf("%3c%.4s\n",' ',"*************");//%.4s截取字符串长度为4 输出3个空格4个* #include <stdio.h> int main() { char s[12]= "a book" ; printf("%50.4s",s) ; } 总长度为50,字符为4;即46个空格+4个字符(a bo)
在输出格式描述 “%m.ns” 中,m 是输出总长度, n 是实际字符的个数, 这里 m 没有给出,则输出总长度就是实际输 出字符的个数。
-
#include <stdio.h> int main() { int a,b ; scanf("%2d%3d",&a,&b) ; printf("a=%d b=%d\n",a,b) ; } 输入1234567890 输出a=12 b=345
-
fabs(a)取绝对值函数
-
#include <stdio.h> int main() { int x=2; int a[2]; a[1]=(x++,x+3,x+7); printf("%d",a[1]); } //a[1]=10 //若a[1]=x++,x+3,x+7,则相当于a[1]=x;x++;x+3;x+7;
逗号运算符从左开始运算,结果只保留最后一个,并赋值。
-
#include <stdio.h> void fun(int *s) { static int j=0 ;//只运行一次 do { s[j]+=s[j+1] ; }while(++j<2) ; } int main() { int k,a[10]={1,2,3,4,5} ; for(k=1 ;k<3; k++) fun(a); for(k=0;k<5; k++) printf("%d",a[k]) ; } //输出35745
static在函数结束前只运行一次
-
#include <stdio.h> void num() { extern int x,y; int a=15,b=10 ; x=a-b; y=a+b; } int x,y ; int main() { int a=7,b=5 ; x=a-b; y=a+b; num(); printf("%d,%d\n",x,y) ; }//输出5,25,main 函数和 num 函数中都说明了变量 a 和 b,由于它们是内部变量,所以它们分别在说明它们的函数内有效。外部变量 x 和 y 在函数 num 之后被说明,而在 num 函数中又要引用它们, 所以在 num 函数中用关键字 "extern"说明变量 x和 y 是一个外部变量,也就是通知计算机这两个变量在 fun函数以外被说明,此处不是定义两个 int 型变量。
-
#include <stdio.h> int main(){ int a=3,b=4; int c=(a++)*(b++); printf("%d",c); }//输出12
-
#include<stdio.h> int main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; 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) 7 7 7 7 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<stdio.h> int main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; 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 <stdio.h> int main(){ int a=1; int *p=&a; a++; printf("%d %d",a,*p); }//输出2 2
p始终指向a的地址,a的值变化,地址不变。
-
#include <stdio.h> char *pp[2][3]={ "abc", "defgh", "ijkl", "mnopqr", "stuvw", "xyz"} ; int main () { printf("%c\n",***(pp+1)) ; /* ① */ printf("%c\n",**pp[0]) ; /* ② */ printf("%c\n",(*(*(pp+1)+1))[4]) ; /* ③ */ printf("%c\n",*(pp[1][2]+2)) ; /* ④ */ printf("%s\n",**(pp+1)) ; /* ⑤ */ } ① 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
C语言易错点及难点
最新推荐文章于 2024-04-24 17:38:04 发布