知识点复习-每日一读

发布时间 2023-11-14 17:48:29作者: 小小卡拉咪

1.编译:编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(Compile)。(C程序->二进制)
2.链接:链接(Link)其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件,编译只是将我们自己写的代码变成了二进制形式,它还需要和系统组件(比如标准库、动态链接库等)结合起来,这些组件都是程序运行所必须的。(将二进制文件进行链接)
3.puts只用来输出字符串,不能输出整数、小数、字符等。
puts 输出完成后会自动换行(不是putchar),而 printf 不会,要自己添加换行符,这是 puts 和 printf 在输出字符串时的一个区别。\n为换行符(转义字符),相反//为注释
4.sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略( ),如果跟的是数据类型,就必须带上( )
5.%hd表示short的输出格式
6.二进制0b()、八进制0(%o)、十六进制0x(%x);%#o,表示输出的时候按8进制进行输出,也就是0形式
7.C语言规定,把内存的最高位作为符号位
8.浮点型只有float和double float,%f 和 %lf 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断;另外%g是对比两种输出哪个最短用哪个输出,而且不会强制加00补位
9.在C语言中,整数和小数之间可以相互赋值:
将一个整数赋值给小数类型,在小数点后面加 0 就可以,加几个都无所谓。
将一个小数赋值给整数类型,就得把小数部分丢掉,只能取整数部分,这会改变数字本来的值。注意是直接丢掉小数部分,而不是按照四舍五入取近似值。
10.大小写和半角全角是两对不同的概念。 半角全角是指在电脑上占的字符位置,A是半角,A是全角
11.如何定义一个字符串?必须借助数组或者指针的形式
char str1[] = "http://c.biancheng.net";
char *str2 = "C语言中文网";
12.使用ASCII编码定义一个字符时,不能直接使用数字,而是要使用转义字符
char a = '\61'; //字符1
char b = '\141'; //字符a
char *str1 = "\x31\x32\x33\x61\x62\x63"; //字符串"123abc"
以\开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。
13.C语言规定,标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线,不能是数字。最大为128位,大小写不同。
14.以分号;结束的往往称为语句,而不是表达式,例如3*4+5;、a=c=d;等

15.对于除法的说明:
a.当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。
b.一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。
16.对于取余的说明:
C语言中取余运算只能针对整数,% 的两边都必须是整数,不能出现小数,否则编译报错。
另外,余数可以是正数也可以是负数,由 % 左边的整数决定:
如果 % 左边是正数,那么余数也是正数;
如果 % 左边是负数,那么余数也是负数。
注意printf写法,要有两个%:
printf(
"100%%12=%d \n100%%-12=%d \n-100%%12=%d \n-100%%-12=%d \n",
100%12, 100%-12, -100%12, -100%-12
);

17.不同类型混合运算格式转换法则:
在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。转换的规则如下:
转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算。
所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算。
char 和 short 参与运算时,必须先转换成 int 类型。
18.printf函数高阶用法:printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4);
其中%-9d中,d表示以十进制输出,9表示最少占9个字符的宽度,宽度不足以空格补齐,-表示左对齐。当输出结果的宽度不足所要求输出的宽度时,以空格补齐(如果没有指定对齐方式,默认会在左边补齐空格);当输出结果的宽度超过所要求输出的宽度时,要求的不再起作用,按照数据本身的宽度来输出。

19.C语言中所有的输出语句:puts()、putchar()、printf()

20.若有9位小数,输出.4%位时,需要四舍五入进位
21.
- -表示左对齐。如果没有,就按照默认的对齐方式,默认一般为右对齐。
+ 用于整数或者小数,表示输出符号(正负号)
空格 用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。
# 对于八进制(%o)和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是 0,十六进制的前缀是 0x / 0X。
对于小数(%f / %e / %g),# 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的,加上 # 以后,即使没有小数部分也会带上小数点。
22.输入函数:
 scanf() 可以输入多种类型的数据。(回车结束)
 getchar()、getche()、getch():这三个函数都用于输入单个字符。
 gets():获取一行数据,并作为字符串处理。
23.对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。
24.%p 是一个新的格式控制符,它表示以十六进制的形式(带小写的前缀)输出数据的地址。如果写作%P,那么十六进制的前缀也将变成大写形式。
指针:
25.*p=表示把p指向的里面的值改变了,p=&a表示改变了p的指向。注意这两点区别
26.int *p,p++值得是移动sizeof(int)的数据长度,但是通常不这么做

27.字符串数组和字符串常量,字符串常量不能进行写入操作,也就是如下命名方式:char *str=“asndbcjfn”;str[3]='p';是错误语句。
28.另外字符串可以直接输出%s。
29.(str+2)[2]相当于*(str+2+2),也就是取得第4个元素的值
30.用指针变量作为函数参数可以将函数外部地址传递到函数内部,使能在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而销毁。例如sweap交换函数,要传入变量的地址
31.指针作为函数的返回值时,尽量返回一个指针,而不是某个变量的地址,因为函数运行结束该变量会被丢弃,地址也变得没有意义

32.数据结构:结点就表示一个元素(数据域+指针域)

33.双链表:

34.单链表:

35.带头指针和头结点和首结点的链表: