
目录一、C语言中文件的相关概念二、C语言中的变量三、C语言中的常量四、定义常量五、进制转换六、输入输出函数一、C语言中文件的相关概念在C语言中分为三种文件源文件.c、头文件.h和库文件系统中。源文件用来编写函数的定义、变量的定义。现阶段写源文件即可头文件一般用来包含其他头文件、数据类型的声明和函数的声明、预处理指令的编写。库文件存在于系统当中库函数的定义存放在库文件当中是前辈写好了的一些功能完善的代码。函数是实现特定功能的一段代码后续可以将这段代码通过函数调用的方式重复使用。主要的核心作用是提高代码的复用率。函数主要的内容就是一系列的语句执行一些特定的功能。一般一个函数执行到 return 语句停止如果没有 return 语句就到函数体执行完成就结束。一个工程中有且只能有一个 main 函数main 函数结束整个工程就结束了。内存宏观上来说就是内存条属于电子设备。微观上看就是一系列存储单元。内存一般只能由特殊的电路进行操作程序员只能通过计算机 CPU 去操作内存。一般内存的最小存储单位是字节Byte最小的存储单元是二进制位bit一个 bit 能存储几个数据一般就是两个数据1、0。一个字节等于 8 个位8bit可以存储 256 个数据0 ~ 255。一般在内存中每一个存储单位一个字节都有自己的内存地址即每一个字节都对应着一个地址。8bit 1Byte 1024 Byte 1 K Byte (2 ^ 10) 1024 K Byte 1 M Byte 1024 M Byte 1 G Byte二、C语言中的变量变量实际上就是内存中的一段空间。C语言中定义变量必须明确变量的数据类型int、float、double、char不同类型的数据存储空间大小和存储方式不一样。程序员就可以通过变量名去操作变量对应的那一段内存空间计算机一般通过变量对应的内存地址去操作。2.1 变量的定义形式auto typename varName;// auto 可以有也可以没有如果没有默认存储在自动存储区域。意义定义了一个 typename 类型的变量变量名是 varName告诉编译器分配多大内存空间多少个字节告诉编译器在哪个位置定义。比如auto int num;、static int var;前者存储在自动存储区域后者存储在静态存储区域。目前 auto 和 static 可以不使用默认就是 auto 类型。int var;如果这个变量定义在函数的内部一般就是默认存储在自动存储区域这个变量只能在当前函数中使用如果在函数外部定义可以在整个文件中使用。int 类型的变量表示当前变量是一个整型变量在C语言中 int 类型变量一般占用 4 个 Byte即 32 个位。每一个字节都有对应的地址编号var获取变量的地址获取的是最低字节的地址。变量名属于C语言标识符的一种标识符一般有函数名、变量名等。C语言中标识符的命名规则由数字、字母、下划线和 $ 符号组成。不能由数字开头。严格区分大小写。不能和关键字重名int、float、double、char 等。2.2 变量的初始化在C语言中变量的初始化一般指在定义变量时为变量赋一个初值。变量的初始化可以在定义的同时进行int num 10;也可以在定义变量之后进行int var; var 20;2.3 变量不初始化在C语言中如果变量没有初始化相当于内存没有明确分配数据那么变量的值由变量的类型和变量存储位置决定。对于函数内部的变量局部变量它的值是一个垃圾值是上一次程序使用这块内存残留下的值。对于函数外部定义的变量全局变量没有初始化时其数据是 0 值。当局部变量和全局变量同名时此时局部变量可以起作用时就优先使用局部变量。在 VS2022 中局部变量如果没有初始化不可以直接使用必须明确赋值。2.4 变量的声明变量的声明主要是告诉编译器这个变量存在告诉编译器变量存储类型和存储位置在编译时不需要知道变量的实体只需要知道这个变量存在于这个工程中即可。全局变量的定义在整个工程有效所有的文件的函数都可以使用全局变量在使用之前需要进行声明。格式extern typeName var;注意不能使用赋值号进行赋值操作。int num 10; extern int num;局部变量的定义只在一个函数中生效所以其作用范围就在定义变量处到函数结束处。局部变量定义可以直接理解为声明。注意声明可以有多次定义只能有一次。三、C语言中的常量常量一般在整个程序运行期间它的值是固定的不会随程序运行而改变存储在常量区/字面量区。这些固定的值一般也是有数据类型的。常量可以是任意的一个整数1、2、3、99也可以是浮点数1.1、2.2、3.14字符常量a、b、c、\n一般一个单引号不能放多个普通字符字符串常量hello world\n、xyd。3.1 整型常量可以是十六进制整数、可以是八进制整数也可以是十进制整数。十进制不需要任何说明普通的整数。实例12、13、100、99。特殊情况12L表示长整型20uunsigned 表示无符号类型。八进制一般使用 0 作为前缀如 0101、067。十六进制一般使用 0x 作为前缀如 0x64、0x41。二进制一般使用 0b 作为前缀如 0b1010、0b0101。C99 之后的版本支持二进制的写法实例1、212 2、215u 3、0xFeel合法 4、123uu不合法3.2 浮点数常量浮点数主要分为整数部分和小数部分。不仅可以使用整数.小数表示方式还可以使用指数形式进行表示。使用小数方式进行表示必须包含整数部分或小数部分和小数点。浮点数常量一般默认是 double 类型此时可以加上 f 后缀表示其是一个 float 类型。指数表示通常需要使用 e 或 E当使用指数表示法时必须包含 e 配合一个整数表示 10 的 n 次方。3.3 字符类型常量一般使用单引号括起来的就是字符常量例如x 可以存储在 char 类型的变量里。字符常量可以是一个普通字符也可以是一个特殊字符即转义字符。3.4 字符串常量一般使用一对双引号括起来表示一串字符通常使用字符数组进行存储。打印字符串一般使用 printf 函数配合 %s。四、定义常量#define预处理器将宏标识符替换成一个指定的内容以此实现常量的定义。# 开头的一般表示一种预处理指令是不会参与运算的在预处理阶段就会被宏的内容替换掉。const是C语言的一个关键字可以将一个变量修饰成一个常量后续就不可以通过变量名对变量进行修改。一般使用 const 定义通常需要进行初始化否则 const 变量就没有任何意义。五、进制转换进制转换是C语言学习中的一个基础知识点主要涉及十进制、二进制、八进制和十六进制之间的相互转换。理解进制转换有助于深入理解数据在计算机中的存储方式以及位运算等底层操作。六、输入输出函数6.1 标准输入和标准输出C语言一般使用 printf() 函数进行一些格式化的输出将不同的数据类型按照字符串的格式进行输出输入一般使用 scanf() 进行输入。这两个函数都属于 stdio.h在使用之前需要 #include stdio.h。输入是从标准输入 stdin键盘进行获取数据的流向是从键盘到内存输出是从内存获取数据输出到屏幕stdout数据的流向从内存到屏幕。标准 IO 的库函数一般都有缓冲区使 scanf 函数和 printf 都有一些特性。6.2 字符串一般以双引号括起来的就是字符串比如 hello\tworld\n这就是一个字符串。其中有一些可见字符还有一些是转义字符最后一个字符一定是空字符 \0所有对字符串的操作都是需要根据空字符进行判断。6.3 printf() 函数print打印fformat 格式。格式化的将数据打印到 stdout 上即屏幕。int num 10; printf(num:%d, num);第一个参数一般是一个字符串大多数字符都原样输出有一些转义字符有自己特殊的含义格式控制符需要后面的可变参数进行替换有多少个格式控制符就需要有多少个可变参数。当格式控制符和后续的可变参数不对应时通常会发生一些不可预知的结果。6.4 scanf() 函数scan扫描fformat。从 stdin键盘获取输入只有获取到了正确输入或者输入错误函数才会结束会产生一个阻塞。整型变量的输入int num; scanf(%d, num);%d 将输入以十进制格式理解将数据赋值给 num 对应的内存。6.5 scanf 函数输入字符串字符串在C语言中会经常使用C语言的标准库为程序员提供一系列字符串处理函数。大多数情况下字符串都是用字符数组存储的需要保证字符数组的大小大于等于字符串的大小。char str[20] Welcom Xyd!!; // 字符数组是可以存储20个字符当前这个字符串有12个字符字符串的输出函数通常可以使用 printf() 进行输出比如 printf(hello world); 或者 printf(%s, str);需要注意的是字符串的输入可以使用 scanf 函数进行输入通常对字符数组进行输入比如char str1[30]; scanf(%s, str1); // 后面填入一个字符数组的名字即可字符数组名就是一个地址