文件的复习方法:
1) 字符串:
strlen()字符串测长函数
strcat()字符串连接函数
strcmp()字符串比较函数
strcpy()字符串拷贝函数
2) strlen和sizeof的区别:①sizeof是一个操作符,strlen是库函数。
②sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为'\0'的字符串作参数。③sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度。
3) define f(x)(x*x)和 define f(x)x*x 之间的差别。
int a=1,b=2,c=6,d=4,e;
e=f (a+b) * f(c+d) ;
#define f (x)(x*x)替换结果为:e=(a+b*a+b)*(c+d*c+d)=5*34=170
#define f (x) x*x 替换结果为:e=a+b*a+b*c+d*c+d=1+2+12+24+4=43
#define f (x)((x)*(x))替换结果为:e= ( (a+b) * (a+b) *(c+d) * (c+d) )=3*3*10*10=900
4)int *р;
p = (int *)malloc (4) ;
p = (int *)malloc(sizeof(int));以上两个等价 填空题,malloc的返回类型是 void *
5)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目。要会作递归的题目
6)结构体和共用体以及链表要掌握最简单的。typedef考的很多,而且一定要知道如何引用结构体中的各个变量,链表中如何添加和删除节点,以及何如构成一个简单的链表,一定记住链表中的节点是有两个域,一个放数值,一个放指针。
7)函数指针的用法(*f)()记住一个例子:
int add (int a, int y)
{....}
main()
{int(*f)()
f=add;
}
赋值之后:合法的调用形式为①add(2,3);②f(2,3);③(*f)(2,3);
8) 两种重要的数组长度:
char a[]={ 'a','b','c' };
数组长度为3,字符串长度不定。sizeof (a)为3。
char a[5]={'a','b','c'}
数组长度为5,字符串长度3。sizeof (a)为5。
9)scanf 和gets的数据:
如果输入的是good good study!
那么scanf("%s",a);只会接收good 考点:不可以接收空格。
gets(a); 会接收good good study! 考点:可以接收空格。
10)“文件包含”的考查点
这里一个C语言程序是有两个文件组成,分别是nol.c, no2.c。那么nol.c中最开始有个#include" no2. c"他表示把第二个文件的内容给包含过来,那么nol.c中调用add()函数的时候就可以把数值传到no2.c中的被调用函数add()了。
一个文件必须要有main函数。这句话错了。例如:no2.c就没有。
头文件一定是以.h结束的。这句话错了。例如:nol.c中就是#include” no2.c”以.c结尾的。
no1.c
#include" no2.c"
main()
{add(29,33);
......
}
no2.c
int add (int a,int b)
{return a+b;}
11) 指针迷惑的考点:
char ch[]="iamhandsome";
char *p=ch;
问:*(p+2)和*p+2的结果是多少?
'm' 'k' 结果是这两个
12)
数组中放数组一定要看懂:
int a[8]={1,2,3,4,4,3,2,2};
int b[5]={0};
b[a[3]]++这个写法要看懂,结果要知道是什么?b[4]++,本身是0,运行完后,b[4]为1了。
13) 字符串的赋值
C语言中没有字符串变量,所以用数组和指针存放字符串:
1. char ch[10]={"abcdefgh"};对
2. char ch[10]="abedefgh";对
3. char ch[10]={'a','b','c','d','e','f','g','h'};对
4, char *p="abcdefgh";对
5, char *р;
p="abcdefgh";对
6. char ch[10];
ch="abcdefgh";错了!!数组名不可以赋值!!
7. char *p={"abcdefgh"};错了!!不能够出现大括号!!