考研复试C语言笔记Word文档格式.docx
《考研复试C语言笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《考研复试C语言笔记Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
![考研复试C语言笔记Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/27/5171d543-098a-442f-96ca-d68152cc1b92/5171d543-098a-442f-96ca-d68152cc1b921.gif)
9:
i+++j(i++)+j
10.1:
float32位,24位表示小数部分(其中包括了符号位),8位表示指数部分。
11:
字符给整形赋值,如果是无符号字符型,赋值给整形就是占据整形低8位,高8位补0,如果是有符号字符型,如果是负号就补1,正好补0;
12:
intshortlong给char就是把低8位给char
13:
整形给long,同char给int一样,
14:
putchar()Getchar()
Puts(),gets()
Printf(“%md”,d)%d,%c,%f,%ld,%o,%x,%u,%s
%d的原意是,按十进制整形数据输出
M表示输出字段的宽度,数字靠右拜访。
如果数字太大,就输出数字,不管m.
Printf(“%m.ns”,d)
输出占m列,靠右端,只取字符串中的前n个字符,如果n大于m,则不管m
Printf(“%-m.ns”,d)
输出占m列,靠左端
Printf(“%m.nf”,d)
%f输出实数,包括单精度和双精度,只能输出六位小数,
输出n位小数
Printf(“%m.ne”,d)
N指的是输出小数的位数,
Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号
Scanf(“%3d%3d”,&
a,&
b)输入123456.
系统自动把123赋值给a,456赋值给b;
同理,如果系统输入abc三个字符,但是ch只能容纳一个,就吧a给ch,bc给后面的。
Scanf(“*%3d”)表示读入三位整数,但是不赋值。
,
Scanf的字符串中,除了格式说明符以外还有其他的字符,输入的时候要在对应位输入这些字符。
Scanf(“%c%c%c”,&
c1&
c2&
c3)输入的abc,不应该是有空格的、
Scanf(“%s%s%s”,str1,str2,str3);
Scanf输入多个字符串的时候,用空格分隔
15:
大小于的优先级高于等于。
16:
优先级由低到高:
赋值运算符,与和或,大小于,算术运算,非。
17:
break是跳出循环,continue是跳出本次循环,
18:
inta[3][4]={{1},{5},{9}},每行自补0
19:
strcat(s1,s2)把s2连接到s1。
Strcpy(s1,s2)把s2复试到s1中,覆盖s1.注意这个复制的时候‘\0’也复制进去
Strncpy(s1,s2,n)把s2的前n个字符复试到s1中
Strlwr大写转小写strupr小写转大写
20:
数组做形参的时候,大小可以不指定,其实本质上还是把首地址给参数传递了
21:
多维数组做函数参数,可以且只能省略第一维的大小。
22:
register变量,只有局部变量和形式参数可以作为寄存器变量,寄存器数目有限的,局部静态变量不能,局部静态变量不能为寄存器变量
23:
外部变量跨文件使用的方法是,在文件1中函数外定义外部变量intA;
在文件2中函数外声明externA
24:
实际上,编译器遇到extern的时候,现在本文件找外部变量的定义,如果找到,就在本文件中扩展作用于,如果找不到,就在连接时从其他文件中找外部变量的定义,然后作用域就是跨文件的。
25:
在文件中函数外部定义的变量,如果是一般的定义,intA,其他文件可以通过extern来引用这个变量,但是如果定义staticintA,则其他文件无法通过extern来引用。
26:
如果外部变量不在文件开头定义,则有效范围只在定义处到文件结束,如果定义之前的函数要引用外部变量,就要用extern声明。
如果外部变量定义在函数之前,就没有必要extern了、通常人们喜欢吧变量和函数的extern声明放在一个单独的文件中,即头文件。
声明:
externintA,B
定义:
intA=13,B=8;
27:
局部变量:
自动,静态局部变量,寄存器。
全局变量:
静态外部变量,外部变量
动态存储:
自动,寄存器,形参
静态存储:
静态局部,静态外部,外部变量
静态存储区:
静态局部变量,静态外部变量,外部变量、
动态存储区:
自动,形参
寄存区存储区:
寄存器。
28:
声明与定义,声明就是inta,。
声明有两种,一种是inta是分配存储空间的,叫定义性声明(简称定义),一种是externa是不分配存储空间的,叫引用性声明,所以,声明包含定义,定义是分配存储空间的声明。
外部变量的定义只能有一次,它的位置在所有函数之外,而同一文件中的外部变量的声明可以有很多次,它的位置可以任意。
系统根据外部变量的定义来分配存储空间,对外部变量的初始化只能在定义时进行,外部变量的声明,其作用是声明该变量是一个已在后面已定义的外部变量,仅仅是为了扩展该变量的作用范围。
Static也是一个声明的符号,但是必须加上变量类型。
29:
define后面不要加;
30:
(*a)++不等于*a++,*a++等价于*(a++)
31:
数组名a代表数组首元素地址,是一个指针常量,在运行期间固定不变,所以a是常量,a++无法实现。
但是,实参数组代表一个固定的地址,可是形参不是一个固定的地址值,而是一个指针变量,可以再被赋值。
二维数组的指针中,取值的只有,*(a[1]+2)
*(*(a+1)+2),a[1][2]
32:
chara[];
A=”Ilove”错误
char*a;
a=”ILOVE”对
即,数组可以再定义的时候赋值,不能再赋值语句中赋值。
同样,这里的数组名也是不能改变的。
但是用指针定义的数组就可以。
33:
int(*p)(intint)指向函数的指针
Int*p(intint)返回值的指针的函数
int(*p)[4],表示一个指向4个整型数组的指针
int*p[4],表示一个含有4个整型指针的数组
34:
对于指向函数的指针,p++等无意义
35:
指向指针的指针。
Char*name={“”,””,””,””};
Char**p;
P=name+I;
Printf(*p)
36:
p1指向a[1],p2指向a[3],p2-p1=2,但是p1+p2无意义。
37:
structstudent
{intnum;
Charc;
}stu[3]={{1,’c’},{2,’c’},{3,’c’}}
38:
(*p).num等价于p->
num
39:
结构体在定义的时候,不能studentI,j,k;
应该
StructstudentI,j,k;
40:
void*malloc(intsize)
41:
共用体所占内存等于最长成员的长度。
42:
枚举类型:
Enumweekday{sum,mon,tue,wed,thu,fti,stu}
EnumweekdayI,j,k;
定义时候自动赋值0-6;
printf(“%d”,sum)输出0
也可以强制赋值
Enumweekday{sum=7,mon,tue,wed,thu,fti,stu}
则mon自动为8,tue自动为9
但是一个整数不能在定义外直接赋值枚举,
i=7;
是错的,应该要i=(enumweekday)2,相当于i=tue;
43:
typedefstruct{intI,intj,intk}NUM
NUMsum;
即可,不用struct
TypedefintNUM[100];
意思是NUM表示一个长度为100的整形数组,到时候NUMn,就表示,n为一个长度为100的整型数组。
Typedefint*NUM;
意思是NUM表示一个整形指针,到时候NUMn,就表示,n为一个整型指针。
NUMa[10]表示a为一个整形指针数组。
Typedefint(*NUM)();
意思是NUM表示一个指向函数指针,到时候NUMn,就表示,n为一个指向函数指针。
44:
位与,可以清零,可以取中间某位,
45:
异或:
特定位翻转(即与11111111异或),
保留原值(即与00000000异或),
交换两个值不用临时变量A=a^b;
b=b^a;
a=a^b;
46:
右移特殊,如果为无符号,就左边补0,如果有,就正数补0,负数补1;
47:
位段:
Structak
{unsigneda:
2;
(必须是unsigned)
Unsignedb:
3;
Unsignedc:
4;
Into;
Unsignedd:
5;
Unsigned:
0;
Unsignede:
6;
IntI;
}
Structakdata;
一个abc占9位,那个i从第三个字节开始算,d占5位,但是Unsigned:
表示下一个位段从下一个单元开始放,e占6位,从下一个单元开始放i;
所以data一共占用8个字节
如果赋值data.a=9;
就会自动把8的低2位给data.a,a里面就是01,再Printf(“%d”,data.a)输出1
48:
输入一个字符串的时候,用回车结束,但是这个回车也会被接受,要用一个getchar来收下回车符,比如
Scanf(“%s”,)
Ch=getchar();
49:
fp=fopen(“a1”,”r”)打开失败则返回NULL
fclose(fp);
成功返回0,失败返回EOF
fputc(ch,fp)把字符ch写到fp中,失败返回EOF
ch=fgetc(fp)从指定文件读入一个字符,失败返回EOF
feof(fp)判断文件是否结束,
fread(buffer,size,count,fp)从buffer数组中读入count个数字进fp文件中,size表示数组中每个元素占字节数。
fwrite(buffer,size,count,fp)
fprintf(fp,”%d”,d)把整型变量d输出到fp文件中
fprintf(fp,”%d”,&
d),从磁盘文件中读入一个整形
putw(10,fp)把整数10输出到fp中
i=getw(fp)
fgets(str,n,fp)从fp文件中读n-1个字符,放入str中
fputs(str,fp)把str放到fp中
rewind(fp),是fp回到文件开头
fseek(fp,100,1)从fp文件当前位置开始,往后移100个字节。
0表示文件开始,2表示文件末尾
i=ftell(fp),i为文件当前对文件开头的偏移量、
50:
r只读w只写a追加
Rb只读(打开的是二进制文本)wb只写ab追加
R+,w+,a+都是读写,但是r+需要该文件已经存在,w+的时候会新建一个文件,a+打开后指针在文件末尾
51:
find是标识变量。
52:
定义一个指针数组,并分别存入四个字符串的首地址。
53:
*(a+i)表示a[i]或者数组a的第i个元素。
a表示二维数组首地址,a[0]表示第0行首地址,a[0][0]表示第0行第0列数组元素。
54:
sqrt返回