C语言考研知识点
-
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
-
运算符运算时ture为1,false为0
-
strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不同的字符,或者到达字符串末尾(遇见\0)。
返回值:
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。 -
int a[]={5,7,9}, *p;
p=a;
*p+++1=a[0]+1,且p指向了a[1] -
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
-
输出格式:
%md: m为指定输出数据的宽度 如果位数小于m,则左端补以空格,如果大于m,则按实际位数输出
显然a=1234的位数是4 大于%2d中指定的长度2 按实践位数输出 所以结果为1234
%m.nf格式:指定输出数据宽度为m位,其中小数占n位,如果数值长度小于m,则左端补空格,%7.2f指定 输出的数据占7列,其中包括2位小数,注意小数点占一位。
例如: printf("%20.15f\n",a/3); 运行结果: 0.333333333333333,即:3个空格,1个0,一个点,15个3。
%-m.nf: 当数据不超过m时,数据向左靠,右端补空格。 -
pow() 函数:
用来求 x 的 y 次幂(次方),其原型为:
double pow(double x, double y); -
文件读写:
读写字符:
fgetc(fp):从fp指向的文件读入一个字符。返回值是读取的字符,如果发生错误则返回 EOF。
fputc(ch,fp):把字符ch写到文件指针变量fp所指的文件中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。读写字符串:
fgets(str,n,fp):从fp指向的文件读入一个长度为(n-1)的字符串,存放到字符数组str中。如果这个函数在读取最后一个字符之前就遇到一个换行符 ‘\n’ 或文件的末尾 EOF,读入即结束,但将所遇到的换行符“\n”也作为一个字符读入。
fputs(str,fp):把str所指向的字符串写入到文件指针变量fp所指向的文件中。用格式化方式读写文本文件:
fprintf(文件指针,格式字符串,输出表列)
eg: fprintf(fp,"%d,%6.2f",i,f);
fscanf(文件指针,格式字符串,输入表列)
eg: fscanf(fp,"%d,%f",&i,&f);用二进制方式向文件读写一组数据:
fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)
buffer: 是一个地址。对fread来说,它是用来存放从文件读入的数据的存储区的地址;对fwrite来说,是要把此地址开始的存储区中的数据向文件输出。(地址是指起始地址)
size: 要读写的字节数。
count:要读写多少个数据项(每个数据项长度为size)
fp: FILE类型指针
例如:
fread(&stud[i],sizeof(struct Student_type),1,fp);
fread(&stud[i],sizeof(struct Student_type),1,fp); -
“向上兼容”–即:不同数据类型的数据参与运算,数据类型要强制转换,转换的方向是: (unsigned)char,(unsigned)short->int->unsigned->long->unsigned long->float->double->longdouble。
-
char类型数组中存储字符串末尾’\0’情况
-
很nice的一篇C语言总结 https://blog.csdn.net/qq_36657788/article/details/103678555
-
逗号表达式. c语言 提供一种特殊的 运算符 , 逗号运算符 ,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个 表达式 的值。. 如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14;a= (a=35,a4)的值是60,其中a=(35,a4)的值是60, a的值在逗号表达式里一直是15,最后被逗号表达式 赋值 为60,a的值最终为60。.
-
字符串函数 <string.h>
-
&、&&的区别
1、最终结果一样。
2、&无论左边是false还是true,右边都执行。
3、&&具有短路效果,左边是false,右边不执行。
4、&&效率更高,项目中推荐使用。
|、||的区别
1、最终的结果一样。
2、|无论左边是false还是true,右边都会执行。
3、||具有短路效果,左边是true,右边不执行。
4、||效果效率更高,项目中推荐使用。
-
“字符串长度的计算”+“strlen()和sizeof()的区别”
参考文章(写得很详细):https://blog.csdn.net/qq_40638006/article/details/80629324. -
while(printf(" * ")) 表示打印*成功,则继续执行while循环体中的内容,否则跳出while循环。printf函数的返回值是打印字符的个数,这里printf()表达式肯定不会等于0,而‘0’是个非0的数值
void main(){
int t=0;
while(printf("*"))
{
t++;
if(t<3) break;
}
}
17. <<左移运算符的运用。左移的位数写在右边。注意理解。
另外,左移一位相当于数字乘以2,右移一位相当于数字除以2.
1<<5,这里1左移5位相当于1乘以2的5次方,也就是32