本系列文章由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. MySQL 触发器的使用

    MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...

  2. (十三)JSON的使用(下)

    (接上一章节) 4.2 使用ajax交互方式 使用ajax的转换思想        A:异步请求在页面中发起,也要在页面中接收数据并展现. B:ajax中的数据不能从作用域中获取,只能从respons ...

  3. Rider开发开发.NET Framework 4.5项目遇到的一些问题

    使用rdier自带resharper功能,蛮爽的但是编译旧的项目时一直报错:Invalid option 'portable' for /debug; must be full or pdbonly' ...

  4. Python多个装饰器的顺序 转载

    3.使用两个装饰器当一个装饰器不够用的话,我们就可以用两个装饰器,当然理解起来也就更复杂了,当使用两个装饰器的话,首先将函数与内层装饰器结合然后在与外层装饰器相结合,要理解@语法的时候到底执行了什么, ...

  5. 6.NIO2-Path、Paths、Files

    NIO.2 jdk1.7中,java对 NIO 极大的扩展,主要增强的是对文件处理 和 文件系统特性的支持 关于其中一些API的使用 public class TestNIO_2_Path_File ...

  6. Java之IO学习

    知其然也要知其所以然,最近对IO流莫名的感觉时候充充电了,所以上网拜读了大神的文章.在学习过程中我找到了一篇很系统很详细的文章贴出来. 声明一下这是转载的文章  原文:https://www.cnbl ...

  7. windows系统编辑过的脚本文件,在linxu上执行报错 /bin/sh^M: bad interpreter: No such file or directory

    如题! 现象: 当时的场景是这样的:我在IDEA中编辑了项目中的脚本sh,然后利用maven打成zip包.把zip包上传到linux服务器解压运行. 当在linux服务器上运行该sh脚本文件时,提示错 ...

  8. smart_ptr之shared_ptr

    智能指针的概念 c++11标准和boost都提供了智能指针的功能.智能指针是普通指针的封装,智能指针是一个对象,对象里面包含了原生指针.可以使用智能指针对象的get()方法可获得封装在里面的原生指针. ...

  9. linux 基础10-磁盘配额管理

    1. 基本概念 1.1 概念: 在linux系统中,由于是多人多任务的使用环境,所以会有多人共同使用一个硬盘空间的情况,如果其中少数几个人大量使用了硬盘空间的话,势必会压缩其他使用者的使用空间,因此管 ...

  10. 用arduino的uno开发板为nano板子烧写bootloader

    这篇文章,是为了记录下某宝上淘到的一个没有bootloader的nano开发板的历程(比较坑),自己搜索资料而记录的. 如果没有bootloader,板子就不能接收上传的程序,什么也干不了. 烧写bo ...