C语言第二课
作者:互联网
发展历史
C语言的特点:丰富的数据类型 结构化的控制语句 高效率的目标代码 源代码可移植性好
程序的基本结构
VC6不是编译器是开发环境 vc98下的CL.EXE是编译器
link是链接器 obj存的是二进制代码 EXE是可以执行的文件
编译链接
编译->将人类阅读的文本代码转换为机器能理解的二进制代码
链接->从指定的obj文件中,抽取二进制代码数据以及其他相关所需要信息按约定的操作系统中执行的文件格式打造一个符合要求的可执行文件 也就是PE文件
产生文件
编译器可以产生的是OBJ文件
链接器可以产生EXE,DLL,OCX...
写编译脚本
编译脚本可以用 bat扩展名来写代码 也可以用其他拓展名
#include 查找环境变量 <> 先查找环境变量 “” 先查找当前目录下 如果找不到在去找环境变量 <官方的>
Main函数
Main 不是程序入口的开始 而是程序员可控制入口 全部变量比main函数先执行
Main 函数参数的来历
获取系统版本 初始化堆 初始化多线程 初始化IO信息 获得命令行 获得环境变量
格式化命令行 格式化环境变量 初始化各种全局变量 获得进程的初始信息 然后根据字符编码带着参数来到main函数 以上就是Main 函数的初始化怎么来的
Main是程序最后一个执行的函数 也是程序员可控的第一个函数
PRINTF 函数
功能:格式化输出到标准输出设备 默认是显示器 多参数
3环 r3 用户态 目态 这是用户可操作的
0环 r0 系统态 内核态 管态 这是系统执行的
现在的操作系统不允许程序直接对硬件的操作 需要通过API进行操作
内存
内存中有4个G的空间 但是只有一半是可以使用的另一半是系统的 而且前64k和后64k
不会分配,所以我们真正能控制的内存不到2G
Windows是一个娱乐的系统 减少更多的成本让用户使用
编译器对地址命名就是变量 变量就是地址
定义变量要先进行初始化 如果不初始化那么值就是上次使用过这段内存的残留值
在英特尔CUP中的数据是高高低低存放的
如果SCANF 没有取地址符 会把n的值当作地址来使用 这样非常危险
标签:初始化,第二课,代码,C语言,编译器,Main,环境变量,函数 来源: https://www.cnblogs.com/cr39/p/15459407.html