IDE 集成开发环境
1.编辑器
2.编译器
3.调试器
4.可视化图形界面
构建 Build 包含编译和链接两个步骤
把源程序翻译成机器指令
运行 Run
执行翻译后的机器指令
程序就是程序员规定的一个一个的指令步骤,计算机按照程序的步骤一步一步的运行
源程序和可执行程序的区别
源程序 人类能够读懂的文字字符 计算机是无法直接执行源程序的
需要将源程序构建(编译和链接)成计算机能识别的机器指令 才能运行
可执行程序
就是能够被计算机执行的程序
关键字
变量是一个容器 引用着某块内存地址 这块内存地址存放着具体数据
main函数
整个程序的执行入口 名称是固定的 有而且只能有一个main函数
由可执行程序的启动代码来调用main函数
类型就是一种标签 这个标签修饰的变量就只能存放该标签要求的数据
变量和数据
变量就是可变的量 里面存放的数据是可变的 但是数据的类型必须符合变量的类型
变量就是一个容器
数据存放在变量中 存放在变量中的数据的类型必须和变量的类型一致
变量的声明和定义和赋值
声明 int a; 起到一个说明作用 表示有a这个变量存在
定义 int b = 100; 在声明的同时再给变量一个初始化的值
赋值 a = 10; 赋值语句操作的变量是已经声明或者定义好的变量
声明没有给初始化的值 定义有给初始化的值
声明可以重复 变量赋值也可以重复 定义不可以重复
开发步骤
1.分析问题
通过分析知道自己如何使用c语言程序来编程来解决问题
2.编辑程序
3.编译链接
4.调试运行
基础数类型
整型
int
short int
long int
实型(浮点数)
float 单精度
double 双精度
精度就是小数点后面的位数 数字的精度越高表示的值就越准确
字符型
char c1=\'A\'
定义了一个char类型的变量c1 c1里面存储的是字符A的编码
c1里面实际上存放的是一个整型的数字 只不过这个数字是一个编码
字符具有双重特性
1.在计算机内部是以编码的方式存储 具有整数的特性 %d输出字符的编码数字
2.具有字符特性 %c输出字符的字符图形
char类型存储的最大整数值为127
有符号数和无符号数
整数和字符类型有符号和无符号之分
浮点数没有符号数和无符号数之分
转义字符
一元运算符
只需要一个操作数的运算符 a++
二元运算符
当运算符需要两个操作数的就是二元运算符
类型转换
=号赋值可能会发生隐式类型转换
隐式类型转换只对基本类型,整型,浮点型,字符型有效
赋值符号的隐式转换规则
int a =10.234; 浮点型转整型的时候 小数被舍弃 a=10
基本类型的自动类型转换
小容量类型自动向大容量类型发生转换
1.有符号 》 无符号
2.小类型 》 大类型
强制类型转换
表达式
使用操作数和运算符(=,+,-,*,/,%)组合而成
操作数可以是常量也可以是变量也可以是一个表达式
表达式本身也可以作为一个操作数来使用的
运算符
赋值运算符 将=右边的值赋值给左边
左边必须是一个可以被赋值的变量
=要求两边的类型必须一样 如果不一致就要进行类型转换(隐式转换和显式转换)
a=b=3; a=(b=3);
两个=号的优先级一样 但是结合方向是从右到左 所以先执行b=3再执行a=b
优先级 描述的是不同级别的运算符的运算顺序
结合方向 描述的是同一个运算符嵌套使用时候是先左还是先右
a += b 比 a = a+b 的运算速度更快
sizeof运算符
变量代表的就是一块内存空间 每个变量需要的内存空间大小是由变量类型来决定的
内存空间大小是以字节为基本单位来分配的
某个类型的数据需要多少个字节空间来存储 可以用sizeof来获取 数据在内存中的存储方式是以二进制的方式来存储的
头文件
提前进行被调用的函数和变量声明
头文件的包含方式
1.<> 专用于来包含系统头文件
只会寻找系统规定的头文件存放目录
2."" 用来包含用户自己创建的头文件
先找用户指定的目录 如果用户的目录下不存在再去系统规定的目录下查找
库函数
每个库就是一个代码文件,库里面就是函数代码的实现
包含头文件和链接库函数
头文件就是库函数中的函数声明
库函数就是函数的实现代码
包含头文件就是把头文件中的函数声明代码复制到c文件的包含处
链接库函数就是把库中的函数代码复制到c文件的函数调用处
每个库都对应着一个固定的头文件 当我们使用库中的函数的时候
必须先包含库对应的头文件 头文件里面存放了库函数的声明
库的种类
静态库
动态库
局部变量和全局变量
局部变量
变量就是一个内存空间 空间中存储的值是可以发生变化的
局部变量空间 在函数运行时创建 函数执行完毕时候空间被释放
函数运行多久 局部变量就能存活多久
全局变量
程序一开始运行的时候就会将全局变量开辟出来 程序运行过程中将会一直存在
对于全局变量来说 程序运行多久 全局变量就能存活多久
局部变量和全部变量重名的时候优先使用局部变量
定义局部变量 只希望某个变量被某个函数私用 而且不需要存在多久的时间
定义全局变量 希望变量能够被很多函数使用 而且变量在整个程序的运行期间都存在