个人见解,有异议可以留言~
第一讲:初识C语言
目录
1.编译和链接
2.main函数
3.库函数
4.关键字
5.字符和字符串
6.转义字符
1.编译和链接
初始的C语言源代码是一个文本文件,要想将一个文本文件变成一个执行文件,需要经过编译器编译和链接器链接,但是并不是仅仅只有这两个步骤,还有预处理,汇编。
例如: hello.c ------------------------> hello.exe
编译和链接
源文件经过编译器的编译生成.obj的目标文件,链接器再将以.obj结尾的多个文件与库文件进行链接,生成可执行文件.exe.
2.main函数
main函数作为程序的入口,每个程序都是从main函数开始执行的(不管你的C语言程序有多少行,都是从main函数开始)。
2.1 main函数的特点
- main函数是程序的入口
- main函数有且仅有一个
- 即使一个项目有多个源文件,里面有众多函数,但是main函数有且仅有一个
3.库函数
当C语言学习进行到后期时,会进行函数的编程,但有些函数的功能使用的代码都一样,这样就会影响开发的效率,所以为了提高代码的开发效率,引进了库函数的概念,库函数里管理了众多函数,使用某一个函数时,因为库函数中函数声明一般放在头文件中,需要引进对应的头文件,否则无法使用。库函数的函数有strlen(),strcmp(),strcpy()……
4.关键字
有些保留的符号给C语言使用,这类符号就被称为关键字。
4.1 关键字的特点
- 关键字都有特殊的意义,主要是保留给C语言使用。
- 程序员自己创建标识符时是不能和关键字重复。
- 关键字也是不能自己创建
4.2 常见的关键字
数据类型:int short long char _Bool(C99) float double
选择结构:if else switch case break default
循环结构:for continue while do
有符号和无符号:signed unsigned
操作符:sizeof
其他:auto const(修饰常量) enum(枚举) extern(外部声明) goto register return static(静态) struct(结构体) typedef(重定义) union(联合体) void volatile(C++)
注:在C99标准中加⼊了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键 字
5.字符和字符串
字符:C语言中诸如此类'a','b','c','d'……'@','#','$'等等,同时为了管理以及通信,也为字符设置了一个标准ASCII编码,C语言中的字符遵循ASCII编码。字符的打印格式:%c
5.1 ASCII编码
对于ASCII编码表来说,重要的有以下几条:
- 'A'~'Z'的ASCII值为65~90,'a'~'z'的ASCII值为97~122,两者对应的大小写差值为32
- 数字字符0~9的ASCII值为48~57
- '\n'的ASCII值为10
- ASCII值为0~31的这32个字符是不打印字符,无法打印在屏幕上观察
5.2 字符串
区别于字符,字符串是诸如此类"abcdefghij","你好啊","hello"……字符串的打印格式:%s
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串 的结束标志。
6.转义字符
转义字符:转换原来意思的字符
6.1 常见的转义字符
C语言中转义字符具体如下:
• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \' :⽤于表⽰字符常量'
• \" :⽤于表⽰⼀个字符串内部的双引号
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。 • \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
• \ddd :ddd表⽰1~3个⼋进制的数字。如: \130 表⽰字符X
• \xdd :dd表⽰2个⼗六进制数字。如:\x30 表⽰字符0
第二讲:数据类型和变量
目录
1.数据类型
1.1 主要的数据类型
字符型:[signed] char , unsigned char
布尔型: _Bool (布尔类型的取值只有true和false,并且引用头文件#include<stdbool.h>)
整型: [signed] int , unsigned int, [signed] short [int],unsigned short [int],[signed] long [int],unsigned long [int], [signed] long long [int],unsigned long long [int]
浮点型: float,double,long double
注:[……]里面的内容都可以省略
1.2 数据类型长度
1.2.1 sizeof操作符
每一个不同的数据类型都拥有自己固定的长度,数据类型的不同,长度就会有差异,长度不同就会影响取值范围。
注:固定:并不是很准确的解释,会根据编译器的不同显示不同的数据类型长度
为了获取数据类型的长度,需要使用操作符 sizeof().这个操作符也是关键字,单位是字节。
sizeof操作符的用法:
sizeof(数据类型)
sizeof(表达式)
sizeof操作符可以操作数据类型和表达式,但是在操作表达式的时候是sizeof操作符是不会执行表达式,只会判断表达式的数据类型。
sizeof操作符的返回值是size_t.
对于size_t的理解:
sizeof操作符是判断数据类型的长度的,sizeof的正常的返回值是不可能出现负数的,所以,在数据类型的大家族中,例如 usigned int,usigned long,usigned long long的printf()函数的占位符分别是%u,%lu,%llu,不利于代码的移植性。
所以为了方便管理,sizeof操作数的返回值就是size_t。统一管理sizeof操作符各种返回值。
1.2.2 unsigned和signed
unsigned和signed是修饰字符型和整型的,signed关键字是表示一个数据类型是带有正负号,包含负值。unsigned关键字是表示一个数据类型是不带有正负号,只能表示0和正整数。
1.3 数据类型的取值范围
(usigned和signed的区别)~~
数据类型:
整型,字符型,布尔类型,浮点型
/*数据类型*/
//字符型
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127 //signed char -128~127
#define UCHAR_MAX 0xff //unsigned char 0~255
//整型
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767 //signed short
#define USHRT_MAX 0xffff //unsigned short 0~65535
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647 //signed int
#define UINT_MAX 0xffffffff //unsigned int
/*signed long和unsigned long signed long long和unsigned long long*/
#define LONG_MIN (-2147483647L - 1)
#define LONG_MAX 2147483647L
#define ULONG_MAX 0xffffffffUL
#define LLONG_MAX 9223372036854775807i64
#define LLONG_MIN (-9223372036854775807i64 - 1)
#define ULLONG_MAX 0xffffffffffffffffui64
2.变量
数据类型就是用来创建变量的,经常变化的值称为变量,不变的值称为常量。
变量创建格式:
data_type name;
|| ||
数据类型 变量名
变量在定义的时候赋一个初值,就是变量创建初始化。
变量创建格式:
data_type name = value;
|| || ||
数据类型 变量名 初值
2.1 变量分类
全局变量:简单理解就是在大括号外面创建的变量。
局部变量:同理,大括号里面的创建的变量。
#include <stdio.h>
int num = 100; //全局变量
int main()
{
int num1 = 1000; //局部变量
return 0;
}