本系列文章由jadeshu编写,转载请注明出处。http://blog.csdn.net/jadeshu/article/details/50751977

作者:jadeshu   邮箱: jadeshu@qq.com    欢迎邮件交流

一.程序基础(重点)

1.1为什么需要操作系统?

因为在以前是直接操作硬件之上的,这样每个硬件不同都需要重新编写程序会很麻烦,这样人们就想到了将软件和硬件隔离,

让人、程序直接跟操作系统打交道,在让操作系统去控制硬件。

1.2为什么需要内存管理器

因为需要代码安全以前程序之间不干涉彼此的内存,同样使每个程序都有逻辑上的空间大小,具体如下图所示

1.3程序编写过程和加载过程(简述)

1.3.1程序编写过程:

我们平常写的代码为文本文件,进行编译后生成可执行文件!过程如下:

源码--->目标编译器----->生成对应目标平台的汇编源码(x86,mips等)--->目标汇编器----->生成对应的二进制可执行程序

*为了方便管理和应用,代码编译后将分为:

*a.代码段(可读)

*b.数据段(可读写)

*c.栈(代码运行时函数局部变量和保存执行上线文用的内存区域)  (可读可写)

*d.堆(代码运行时分配的内存区域) (可读可写)

代码编译后确定的地址是虚拟地址/逻辑地址。

1.3.2程序加载过程:

当我们点击程序时,操作系统将程序(可执行文件)加载到内存中,CPU的CS:IP执行要运行的首地址代码处(即是代码段位置),CPU从该位置取一条指令执行一条指令;

*a 取一条指令后执行一条指令,CS:IP默认跳转到下一条指令位置。

*b 当取有些指令后,会改变CS:IP的地址,即发生跳转其他地址的位置。

二.变量

2.1.变量声明

---------2.1.1建立存储空间  如float f;   (定义性声明)

---------2.1.2引用声明(不需要建立存储空间) 如extern float f

2.2.变量格式

---------2.2.1【可选修饰符】 【变量类型】变量名 【修饰符】【标识符】

如static int iStaticNum;

---------2.2.2可选修饰符有按变量内存理解分auto(默认),register(限制变量定义在寄存器上的修饰符),static(静态),extern(外部声明/作用域),const(常量),[volatile(告知编译器编译方法的关键字,不优化编译)]

2.3.全局变量和局部变量(包括静态变量)

2.4.

2.5.初始化  赋值=

////////////////////////////////////////C语言//////////////////////////////////////////////////

1.代码前定义 (编译器和标准不同结果不同)

////////////////////////////////////////C++语言//////////////////////////////////////////////

1.先定义后使用!(任何位置)

C语言学习笔记2-程序基础和变量的更多相关文章

  1. [Golang学习笔记] 04 程序实体1 变量声明

    变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...

  2. [C语言学习笔记一]基本构架和变量

    基本构架 所有的C程序都有一个 main 函数.其后包含在大括号中的是 main 函数的内容. main函数是程序的入口,程序运行后,先进入 main 函数,然后一次执行 main 函数体中的语句. ...

  3. R语言学习笔记:glue包实现变量传参

    glue包介绍 glue包可用于自定义变量,然后通过传参的方式,对字符串部分内容进行自适应修改. 例如:可将日期赋值为:date = as.Date("2019-12-05"),然 ...

  4. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  5. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  6. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  7. Go语言学习笔记一: Hello World

    Go语言学习笔记一: Hello World 听说Go语言又快又简单.即具有C语言的运行速度,又具有Python语言的开发效率,不知道真的假的.所以特意来学学这门"老"语言. 下载 ...

  8. 《C# 语言学习笔记》——目录

    C# 简介 变量和表达式 流程控制 3.1 布尔逻辑 3.2 goto语句 3.3 分支 3.4 循环 变量的更多内容 4.1 类型转换 4.2 复杂的变量类型 4.3 字符串的处理 函数 5.1 定 ...

  9. 《C# 语言学习笔记》——C# 简介

    1 什么是.NET Framework .NET Framework 是Microsoft为开发应用程序而创建的一个富有革命性的新平台. 1.1 .NET Framework 的内容 .NET Fra ...

随机推荐

  1. 在oracle表中增加、修改、删除字段,表的重命名,字段顺序调整

    增加字段语法:alter table tablename add (column datatype [default value][null/not null],….); 说明:alter table ...

  2. 夯实基础:彻底搞清楚Cookie 和 Session 关系和区别(转)

    原文地址:http://www.sohu.com/a/281228178_120047080 网络请求中的cookie与set-Cookie的交互模式和作用:https://my.oschina.ne ...

  3. C# 对象互转

    /// <summary> /// 适用于初始化新实体 /// </summary> static public T RotationMapping<T, S>(S ...

  4. (六)Struts的简单异常处理

    一.异常的分类 1.1 struts中的异常概念 Struts的声明式异常: 不处理异常,将异常交给struts框架来处理. 1.2 局部异常 局部异常:异常定义在Action里,异常处理只在这个Ac ...

  5. Kong命令(二)service

    service介绍: service 是声明了一组name.host.port.protocol等配置的函数.可以绑定route.upstream上下游服务.并且对于route.upstream可以绑 ...

  6. svg-sprite-loader ( svg-icon) 使用

    svg-sprite-loader 可以多个svg图标合并. 使用时只需根据合并的symbol的id即可.  <svg class="svg-icon" aria-hidde ...

  7. 建表时表空间的一些参数pctfree initrans maxtrans storage的含义

    转自:https://a475334705.iteye.com/blog/2291441 create table X_SMALL_AREA (   idx_id             NUMBER ...

  8. Computer Vision_18_Image Stitching: Image Alignment and Stitching——2006

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  9. win10关闭防火墙和其通知

    Win10电脑在关闭防火墙后,防火墙的通知会不定期提醒,如果误点后,防火墙就悄悄的开启了,导致好多功能就用不了了,所以比较有效的方法是:关闭防火墙,并关闭防火墙通知 1.关闭防火墙 在控制面板中,选择 ...

  10. deep_learning_Github_初学者教程

    Github_link_from:https://github.com/lawlite19/MachineLearning_Python 机器学习算法Python实现 目录 机器学习算法Python实 ...