1.什么是c语言?
:c语言是一种通用计算机编程语言,广泛应用于底层开发。是一门面向过程的计算机编程语言。二进制。
什么是程序:?
:程序是一组计算机能识别和执行的指令
源程序:又称源代码,未经编译按照程序设计语言规范书写的文本文件,人类可读的计算机 语言指令,后缀为.c
1.1 c语言程序的结构
(1)一个程序由一个或者多个源程序文件组成。
源程序文件包括3个部分
a.预处理指令:常见#include<stdio.h>,#define等(c编译系统对源程序翻译之前会先由一个预处理器对预处理指令进行预处理),对于#include<stdio.h>指令来说,就是将stdio.h头文件内容读取进来。
b.全局声明:即在函数之外进行的数据声明(通俗来讲就是和编译器打个招呼,告诉编译器变量的类型)。
在函数外面声明的变量成为全局变量,在函数中声明的变量叫局部变量(后面会详解)。
c.函数定义(后期详解)。
(2)函数是c语言重要组成部分。
一个c语言程序由一个或者多个函数组成,有且只有一个main函数。
(3)一个函数包括两个部分。
a.函数首部:函数的第一行,包括函数名,函数类型,函数属性,函数参数名,参数类 型。函数名后面要加一对圆括号,里面写函数参数和类型,无参可以不写或者写void。
b.函数体:由声明部分和执行部分组成(由若干个语句构成),后期详解。
(4)程序总是从main函数开始执行,无论main函数位置在哪里。
(5)要求计算机的操作由函数中的c语句完成。
(6)每个数据声明和语句最后必须要加分号(;)。
如 c=a+b;
(7)c语言本身不提供输入输出语句。
(8)程序应当包含注释。
以/开始的单行/注释被称为c++风格的注释
以/*开始以*/结束的块式注释
1.1.2 最简单的c语言程序:(下面有详解)
注意:
1:一个c语言程序从main函数开始执行,main函数是整个程序的入口。
2:c语言程序最多只能有一个main函数。
3:c语言的main函数不只有这一种写法
printf函数介绍printf是一个函数,功能是在屏幕上输出数据,但是这个函数不是我们自己进行底层实现的。
注意:printf函数包含在名为stdio.h的库函数里面,该库(也称头文件)包含了很多常用函数的实现代码,所以使用printf时要用#include来引用头文件<stdio.h>
"今晚月色真美"介绍
被双引号""括起来的内容称之为字符串,用""引起来置于printf的括号内部的内容可以直接显示在屏幕。
注意:”今晚月色真美“此处的双引号必须是英文输入,c语言所有代码都必须是英文输入。
return 0;介绍
表示程序正常退出,return 提供0作为函数的返回值。
2 数据的表现形式
2.1 为什么存在数据类型?
:在日常生活中,有各种各样的数据,例如身高,体重,分数,所以产生了不同的数据类型。
2.2数据类型的大小与分类
计算机内部储存单位:
1位=1比特
1字=2字节
1字节=8位
1字=16位
常见整型数据的储存空间和范围 类型 字节数 取值范围 int(基本整型) 4 -2147483648~2147483647 unsigned int(无符号基本整型) 4 0~4294967295 short(短整型) 2 -32768~32767 long(长整型) 4 -2147483648~2147483647 unsigned short(无符号短整型) 2 0~65535
字符型数据存储空间和值的范围 类型 字节数 取值范围 char 1 -128~127 unsigned char 1 0~255 为什么数据会有这么多种类?
浮点型数据存储空间和取值范围 类型 字节数 有效数字 数值范围(绝对值) float 4 6 0以及1.2*10的-38次方~3.4*10的308次方
double 8 15 0以及2.3*10的-308次方~1.7*10的308次方
1.因为不同数据在内存占用的空间不同,一般而言,占用内存越大的数据,其能表示的数据范围越大 ,选用合适的数据类型来储存数据可以更好的节省内存的空间
介绍利用sizeof操作符计算各种数据类型大小(如下图示)
sizeof操作符的用法:sizeof(数据类型)/sizeof(变量名),通过sizeof运算符可以求出不同数据类型在内存中占用的内存。
3. 常量和变量
在计算机高级语言中,数据有两种表现形式:常量和变量。
3.1 常量:在程序运行过程中,其值不能被改变的量被称为常量。
(1)整型常量:如1000,12345,0,-345等都是常量
(2)实型常量 ,有两种表现方式
i.十进制小数形式,由数字和小数点组成,如123.345,0.345,-56.7,0.32,12.0等
ii.指数形式,如12.34e3(代表12.34*10的3次方),因为计算机无法输出上角或下角数
字,所以规定以字母e或者E代表以10为底的指数。注意:e或者E之前必须有数字,且
e或E后面必须为整数。
(3)字符常量,包括两种形式字符常量:
i.普通字符,用单引号括起来的一个字符,如'a','b','c','Z',注意:单引号只是界限符,字符
常量只能是一个字符,字符常量储存在计算机储存单元时并不是储存字符本身,而是根
据ASCII代码储存的。
ii. 转义字符,一种特殊形式的字符常量,以字符"\"开头的字符序列,常见以"\"开头的特
殊字符见下表。
转义字符 | 字符值 | 输出结果 |
\'' | 一个双引号 | 输出双引号 |
\? | 一个问号 | 输出问号字符 |
\a | 警告(alert) | 产生声音视觉信号 |
\b | 退格 | 光标当前位置后退一个字符 |
\n | 换行 | 光标移到下一行开头 |
\t | 水平制表符 | 光标移动下一个tab位置 |
\o,\oo,\ooo,o代表一个八进制数 | 与该八进制码对应的ASCII字符 | 与该八进制对应的字符 |
\xh[h...],h代表一个十六进制数 | 与该十六进制码对应的ASCII字符 | 与该十六进制对应的字符 |
(4)字符串常量, 如"girl","moon"等,用双引号将若干字符括起来,字符串常量指的是双引
号里面的全部内容(不包括双引号本身),注意不能错写成’girl‘,'moon'。单引号里面只
能包含一个字符,双引号里面可以包含一个字符串。
(5)符号常量,用#define指令,指定用一个符号名称代表一个常量。如:
#define PI 3.1416 //注意行末尾没有分号!
经过#define指令,以后本文件从此开始所有的PI都代表3.1416。这种用符号代表一个常
量的叫做符号常量。
注意:要区分符号常量和变量,符号常量不占内存,只是一个临时符号,代表一个值,预编译后这个符号就不存在了,所以不能对符号常量赋新值。习惯符号常量大写,便于区分。
3.2 变量:字面意思就是可以变化的量。
变量代表一个有名字的,具有特定属性的一个存储单元(存储器内可以存放一个字或若
干个字节的基本单位,后期会详解),用来存放变量的值,程序运行期间,变量的值可
以改变。变量必须先定义再使用!以下代码举例变量的使用
3.2.1 变量的初始化和赋值
变量的输出
int类型的占位符是%d,相当于第一个%d为zh占位 ,第二个%d为money占位,是一一对应的关系,但是不同的数据类型占位符会不同(%后面跟的字母不同)后期会详解。
根据变量做一个测试 ,看以下代码 :
scanf("%d%d",&zh,&money);这行代码通过scanf函数输入数据,其中这两个数据用
空格间隔,输入的数据会分别赋值给zh和money
注意:
1.scanf中的&(取地址符)不可省略
2.某些编译器可能会报错,比如vs,尝试将
#define _CRT_SECURE_NO_WARNINGS 1写在程序地一行
3.2.2全局变量和局部变量
作用域:限定这个名字的可用性的代码范围
局部变量:定义在函数内部的变量,其作用域仅限于函数内部。
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
像zh和money这种定义在函数大括号里面的变量称之为局部变量。
注意:当全局变量和局部变量的变量名字重复时,会优先使用局部变量(局部优先
原则)
全局变量:在所有函数外部定义的变量,其作用域为整个程序。
这段代码只有一个函数,zh变量是定义在main函数之外的,所以这里的zh就称为 全局变量,对于全局变量我们也可以对其进行正常的赋值操作。
时间紧迫,下期再见