发表时间:2022-03-26来源:网络
资料领取Q群:1070240985
四、最简单的C程序
1 )程序:
一个程序由一个或者多个源程序文件组成,一个源程序中只有一个mai函数(主函数) 2)预处理指令:
1、 如#include,(还有其他的指令,用到再讲)C编译环境在对源程序进行“翻译”之前,都会先去做一个事情,先由一个预处理器,对预处理指令进行处理,对于指令来说,就是在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息,#include 叫做文件包含命令 它的作用就是用来提供这些信息的,用来引入对应的头文件(.h文件),这样才能调用库函数。
2、#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。
3、使用尖括号< >和双引号" "的区别在于头文件的搜索路径不同: 使用尖括号< >,编译器会到系统路径下查找头文件; 而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。
资料领取Q群:1070240985
1、局部变量 只能在声明的函数内部使用,离开了声明的函数,就不能使用该变量了。不同的函数可以使用相同名字的变量,它们代表不同的对象,互不影响,形式参数也是局部变量,在一个函数的内部也可以在复合语句中定义变量,这些变量中也只是在本复合语句中有效。复合语句称为分程序,或程序块。
2、全局变量不仅可以在main函数中,而且可以在别的函数中使用,也就是说全局变量是可以在程序中的任意地方使用。它可以增加函数之间数据的联系,它在程序的全部执行过程中都会占用存储单元,是函数的通用性。总结来就是说两者作用域不一样。
一个C程序是由一个或者多个函数组成的,但是其中必定要有且只有一个main函数,程序开始也是从main函数开始的。
一个函数包含两部分:
1)函数首部,函数的第一行:函数类型、函数名,(函数参数类型,函数参数名称),其是(形式参数),形式参数可以是void ,也可什么都没有。C语言本身不提供输入输出语句,输入输出的操作都是要调用系统库函数scanf和printf等函数来实现的,而此函数是在,文件里面,所以在开头必须先预处理此头文件。 而形参和实参:当我们调用函数时,对其传入的参数和函数体内接收到的参数其实并不是同一个变量。调用函数时向函数传入的参数称作实际参数,简称实参,而函数体内部用于接收外部调用时传入的参数的参数称为形式参数,简称形参。
1、编程:在编译环境中书写程序,编写好了之后,系统会将此源程序,以.c为后缀的文件形式存放在指定的文件夹中,如 f.c文件 。
2、编译:编译环境会对源程序进行语法检查,如有发出错误信息提醒编程人员修改,直到没有语法错误,编译程序自动将源程序转换为二进制形式的目标文件 是以后缀.obj文件保存。
3、 链接:经过编译所得到的二进制目标文件,还不能别计算机直接执行,它们还只是零散的一个个部件,必须由链接程序将编译后的目标文件和函数库还有其他生成的文件组成起来,生成一个计算机能执行的可执行文件。后缀名为.exe文件。
1、在c语言中,变量的作用域 可以分为全局变量和局部变量,而从另一个角度说,变量的储存有两种不同的方式,静态储存方式和动态储存方式。静态指的是程序运行期间 由系统分配固定的空间给程序,而动态 则是程序运行期间 需要根据情况进行动态分配储存空间的方式。
2、内存中使用储存空间的情况,可以分为以下三种:
(1)程序区
(2)静态储存区,存放全局变量 负责给程序运行时分配内存区 在静态数据区,内存中所有的字节默认值都是0x00
(3)动态储存区,它存放以下数据:
对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。在 c 语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。
1- auto (自动变量) 在程序的函数中的局部变量,如果不专门声明为静态(static)存储方式,都是自动分配动态的地址存储空间。包括复合语句和函数的形参 都是的,自动变量用关键字 auto 为声明。重点是这些变量在函数调用完毕后它们都会被系统给释放回收内存。
2- static 静态变量(局部变量) 有时候,我们希望自己的局部变量不被函数调用完毕后消失,而继续保持原值,其占用的储存单元不是释放,用关键字 static 进行声明 这类变量叫静态变量。它和全局变量相同的是,在函数调用结束后,它并不释放内存,保留其当前值,而且在整个程序运行时,都不释放内存。不同的是。它本质还是局部变量,在其他函数中也不能使用它,而且,它只能进行第一次赋值,在整个程序运行时,它只会保留上一次函数调用结束时的值。一个被声明为静态的全局变量可以被模块内(源程序)所用函数访问,但不能被其他模块外(源程序)其他函数访问,它是一个本地的全局变量一个被声明为静态的函数只可被这一源程序的其他函数调用.那就是,这个函数被限制在声明它的模块本地范围内使用全局变量(外部变量)的说明再冠以static就构成了静态的全局变量。当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围(只能在本地)tatic函数与普通函数作用域不同,仅能在本源文件内使用此函数。
3- register( 寄存器变量) 在程序运行时,如果一个变量,被频繁使用,那么系统就必须多次访问内存中的单元,会影响程序执行效率,因此为了提高效率,就产生了寄存器变量,它可以直接将局部变量的值存放到CPU的寄存器中,需要时,直接从寄存器中取出参数运算,不必经过内存中取存储,由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"。由于寄存器的存取速度远高于对内存的存取速度,所以这样可以提升执行效率。
4- extern (外部变量) 一般来说外部变量是函数的外面定义的全局变量
如果没有在头文件中定义有外部变量(文件的知识)
那如果在一个程序中如果需要在一个源文件内扩展到另一个源文件的作用域的全局变量,就可以在定义函数时引用extern关键字将该变量转为“外部的变量”,表示将此变量的作用域扩展到此位置,有了此声明,就可以在其他源文件中使用此变量了。 将全局变量的作用域扩展到其他文件,可以先在一个文件中定义一个变量,然后再在其他文件中用extern定义相同名字的变量,就可以将作用域扩展到整个程序的结束了。
*注 如果在文件1中的全局变量加了static那么这个变量就会被限制在此文件中了,在文件2中使用extern也访问不到文件1的全局变量了
在一个函数声明前加extern 此函数就会可扩展作用域,可以在其他文件中使用此函数。
1、常量相当于数学的常数,它在程序运行过程中是不能被修改的
2、一般都有: 整型常量、浮点型常量、字符型常量 、字符串型常量、 符号型常量
整型常量没什么好说的 和数学的整数是一样的。
浮点型常量:有两种,一是十进制时是像数学的加上小数点构成,二是指数形式 规定以字母大或小e代表为以10为底的指数,注* e或E前 必须有数字,且e或E后必须为整数,0.1E +_(正负)6 是正确的.
字符型常量:有两种,一是普通字符,用单引号‘ ’引起来的的字符如 ‘ a ’ ,一个单引号只有有一个字符。字符常量在存储单元中并不是存储字符本身,而是转换成ASCII码来存储的。二是转义字符,以字符 “” 开头的字符序列叫转义字符。特殊用法:用 ‘101‘ 代表八进制数101的ASCII字符,即 ' A '八进制 101 转换成10进制 :1* 8^0+0 * 8^1 +1 * 8^2 =64+0+1=65 在ASCII码表上65数字就是字符A。 转义字符表:
字符串常量用“”双引号引起来的多个字符,叫字符串常量,它以0结尾(后面会详细结束)。符号常量:用#define 标识符 常量定义,指定一个字符代表一个常量,它用#号开头所以它也是一个预处理指令,称为宏定义(后面详解)它和const不同的是它不占用内存,只是一个临时符号,在预编译处理后这个符号就不存在了,故不能对此符号进行修改。宏不会检查代码错误,只是替换,但是const会编译报错。宏的好处:定义代码或字符串、方法、参数 const不能。坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换。(变量)
变量在使用前,必须在代码中进行声明,即创建该变量。
变量的声明形式:数据类型+变量名字。
变量名,变量名字必须以字母打头,名字中间只能由字母、数字和下划线“_”组成;
最后一个字符可以是类型说明符,不能是关键字。(保留字)
变量代表一个有名字的,有具体含义属性的一个储存单元,它用来存放数据,它的值是可以改变的。
变量实际上是以一个名字为代表的存储地址,在对其编译链接时,系统都会给每一个变量名分配对应的内存地址,从变量中读写,实际上是通过变量名找到相应的内存地址,从该存储单元中读写数据。 (常变量)
在定义变量前加const关键字可将此变量设为常量,此变量在期间不可对其进行修改,它是会在程序运行时一直占用储存单元的。 (标识符)
在程序中,用来对数据类型,进行命名的时候,是对于变量、常量、函数、语句块使用的名字。标识符可能是字、编号、字母、符号,也可能是由上述元素所组成。 C语言中把标识符分为三类: 关键字, 预定义标识符,用户自定义标识符。
关键字(保留字):是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。
预定义标识符:预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类: 1 、库函数名字scanf printf等 2、编译预处理命令define include等
用户标识符:用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则 :字母、下划线、数字这三个方面组成,但开头必须是字母或下划线
所谓标识符是指常量、 变量、语句标号以及用户自定义函数的名称 复制代码
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14