【从头学C语言】知识总结一:C语言基础知识总结

 2024-02-23 02:02:44  阅读 0

C语言是一种计算机编程语言。 它兼有高级语言和汇编语言的特点。 它可以用作系统设计语言来编写工作系统应用程序,也可以用作应用程序设计语言来编写不依赖于计算机硬件的应用程序。

事实上,C语言是一种非常小的内核语言,只包含很少的与硬件相关的部分。 C语言不直接提供输入输出语句。 所有相关的文件都需要文件操作语句和动态内存管理等操作。 为了实现这一点,我们需要使用系统提供的库函数。 可以说C语言是一种结构化编程语言。 这是一个单独的想法。 以Hello World程序为例,可以创建两个函数,一个输出Hello,一个输出World。

编程入门c语言_c语言程序入门_入门程序语言

2、C语言中的数据类型列表:(后面会详细解释)

整数类型、浮点类型(实数类型)、单字符类型、字符串类型、数组类型、指针类型、结构体类型、联合类型

3、C语言的控制语句列表:(后面详细解释)

跳转类型:goto语句、break语句、语句、语句

判断类型:if-else语句

循环类型:do-while语句、while语句、for语句

选择语句:-case 语句

4、最简单的C程序:

1)。 一个程序由一个或多个源程序文件组成。 一个源程序中只有一个mai函数(主函数)。

2)、预处理指令:

1、比如#,(还有其他指令,后面会讲到)C编译环境在“翻译”源程序之前,会先做一件事。 首先,预处理器将处理预处理指令。 ,对于指令来说,在使用标准函数库中的输入输出函数时,编译系统要求程序提供相关信息。 # 称为文件包含命令。 它的作用就是提供这些信息并引入相应的 。 文件(.h文件),以便调用库函数。

2、#的处理过程很简单,就是将头文件的内容插入到命令的位置,从而将头文件和当前源文件连接成一个源文件,与复制的效果是一样的并粘贴。

3、使用尖括号<>和双引号“”的区别在于头文件的搜索路径不同:

使用尖括号<>,编译器将在系统路径中搜索头文件;

当使用双引号“”时,编译器首先在当前目录中查找头文件。 如果没有找到,则会在系统路径中搜索。

5、全局变量和局部变量:

#=3;//这是全局变量a,可以在整个程序中起作用 voidf(intn);//里面的n是形参(void){intn;//定义一个n和形参的n这里的参数互相不影响 intb=50;//这是抖音() b 在主函数之后没有影响 inta=2;//这里定义一个 a 和外面的 a 没有任何关系 if (a> b ){//这是一个复合语句(包括其他循环和选择语句) inta=1;//这里定义的a与a的外部没有任何联系,但是//根据变量的特性,如果变量name is the same // 复合语句的变量会覆盖外层主函数的a,主函数的a会覆盖外层 // 全局变量的a // (小覆盖大)}} voidf(intn){intn;//这里定义一个n也是一样的 形参n没有联系}复制代码

1. 局部变量只能在声明的函数内部使用。 如果没有声明的函数,则无法使用该变量。 不同的函数可以使用同名的变量。 它们代表不同的对象,并且互不影响。 形式参数也是局部变量。 变量也可以在函数内的复合语句中定义。 这些变量仅存在于该复合语句中。 高效的。 复合语句称为子程序或程序块。

2、全局变量不仅可以在主函数中使用,还可以在其他函数中使用,也就是说全局变量可以在程序中的任何地方使用。 它可以增加功能之间的数据连接。 它在程序的整个执行过程中都会占用存储单元,这就是函数的通用性。综上所述,两者的作用域是不同的。

6、C函数定义:

AC程序由一个或多个函数组成,但必须有且只有一个主函数。 程序也从main函数开始。

一个函数包含两部分: 1)函数头,函数的第一行:函数类型,函数名,(函数参数类型,函数参数名),也就是(形参),形参可以是void或者任何东西。 2) 函数体代表函数大括号下的程序。 一般有:声明部分。 一般来说,在使用变量之前,必须声明它以定义其类型(数据类型)。 每行数据声明或C语句后必须有一个语句。 分号表示结束。

7. 说明:

C语言本身不提供输入和输出语句。 输入输出操作是通过调用系统库函数scanf等函数来实现的。 这个函数是在文件中的,所以一开始就必须对这个头文件进行预处理。

至于形参和实参:当我们调用函数时,传入的参数和函数体内接收到的参数实际上不是同一个变量。 调用函数时传递给函数的参数称为实参,简称实参,函数体内用于接收外部调用时传入的参数的参数称为形式参数,简称形式参数。

8、C程序运行步骤:

编程—>编译—>链接

1、编程:在编译环境下编写程序。 写入后,系统会将源程序以.c后缀的文件形式(例如fc文件)存放在指定文件夹中。

2、编译:编译环境会对源程序进行语法检查。 如果发出错误信息提醒程序员修改,直到没有语法错误为止,编译器会自动将源程序转换为二进制目标文件,并保存为后缀为.obj的文件。

3、链接:编译后得到的二进制目标文件不能直接被计算机执行。 它们只是分散的组件。 编译后的目标文件、函数库和其他生成的文件必须由链接器组成。 ,生成计算机可以执行的可执行文件。文件扩展名.exe

9、C变量存储方式及生存期:

1、C语言中,变量的作用域可分为全局变量和局部变量。 从另一个角度来看,变量的存储有两种不同的方式,静态存储和动态存储。静态是指在程序运行过程中系统为程序分配固定的空间,而动态是指需要根据需要动态分配存储空间。程序运行过程中的情况。

2、内存中存储空间的使用可以分为以下三种:

(一)节目区

(2)静态存储区,存放全局变量,负责程序运行时将内存区域分配给静态数据区。 内存中所有字节的默认值为0x00。

(3)动态存储区,存储以下数据:

1.函数形参,调用函数时为形参分配存储空间

2. 函数中的自动变量

3、调用函数时的现场保护和返回地址等。

4、变量的存储类型有四种,分别是:auto(自动变量)、(静态变量)、(寄存器变量)、(外部变量)

对于上述数据,在函数开始调用时动态分配存储空间,在函数结束时释放空间。 在C语言中,每个变量和函数都有两个属性:数据类型和数据存储类别。

1-auto(自动变量)

程序函数中的局部变量,如果没有专门声明为()存储,则自动分配动态地址存储空间。 这包括复合语句和函数的形式参数,以及使用关键字auto声明的自动变量。重点是这些变量在函数调用完成后会被系统释放以回收内存。

2-静态变量(局部变量)

有时候,我们希望我们的局部变量在函数调用后不会消失,而是继续保持原来的值。 他们占用的存储单元没有被释放。 此类变量用关键字声明,称为静态变量。 与全局变量一样,它在函数调用完成后不释放内存,保留其当前值,并且在整个程序运行过程中不释放内存。 区别在于。 它本质上是一个局部变量,不能在其他函数中使用。 而且,只能第一次赋值。 整个程序运行时,只会保留最后一次函数调用结束时的值。

声明为 的全局变量可以被模块(源程序)内的函数访问,但不能被其他模块(源程序)外部的函数访问。 它是一个局部全局变量。

声明为静态的函数只能被该源程序中的其他函数调用。 也就是说,该函数仅限于声明它的模块的本地范围。

全局变量(外部变量)的描述的标题是

这就构成了一个静态全局变量。 当源程序由多个源文件组成时,非静态全局变量在每个源文件中都有效。 静态全局变量限制了它们的作用域,即它们只在定义该变量的源文件内有效,不能在同一源程序的其他源文件中使用。 由于静态全局变量的作用域仅限于一个源文件,并且只能被该源文件中的函数共享,因此可以避免在其他源文件中出现错误。

将局部变量更改为静态变量会更改其存储方法,即更改其生存期。 将全局变量更改为静态变量会改变其作用域并限制其使用范围(仅限本地)

函数作用域与普通函数不同。 该函数只能在原始源文件中使用。

3-(寄存器变量)

程序运行时,如果频繁使用某个变量,则系统必须多次访问内存中的该单元,这会影响程序的执行效率。 因此,为了提高效率,创建了寄存器变量,可以直接改变局部变量的值。 将其存储在CPU的寄存器中。 当需要时,直接从寄存器中取出参数进行操作,无需将其存储在内存中。 由于硬件寄存器长度的限制,寄存器变量只能是char、int或指针类型。 寄存器说明符只能用来描述函数中的变量和函数中的形参,因此不允许将外部变量或静态变量声明为“”。 由于寄存器的访问速度远高于内存的访问速度,这样可以提高执行效率。

4-(外部变量)

一般来说,外部变量是在函数外部定义的全局变量。

如果头文件中没有定义外部变量(文件知识)

如果需要将一个源文件中的全局变量扩展到程序中另一个源文件的作用域,可以在定义函数时引用该关键字,将该变量转换为“外部变量”,即表示该变量的作用域of 被扩展到这个位置,通过这个声明,这个变量可以在其他源文件中使用。

要将全局变量的作用域扩展到其他文件,可以先在一个文件中定义一个变量,然后在其他文件中定义一个同名的变量,将作用域扩展到整个程序的末尾。

*注意,如果添加文件1中的全局变量,则该变量将被限制在该文件中。 如果在文件2中使用,则无法访问文件1的全局变量。

在函数声明之前添加此函数将扩大范围,您可以在其他文件中使用此函数。

结尾

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码