C语言学习笔记2-程序基础和变量
本系列文章由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-程序基础和变量的更多相关文章
- [Golang学习笔记] 04 程序实体1 变量声明
变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...
- [C语言学习笔记一]基本构架和变量
基本构架 所有的C程序都有一个 main 函数.其后包含在大括号中的是 main 函数的内容. main函数是程序的入口,程序运行后,先进入 main 函数,然后一次执行 main 函数体中的语句. ...
- R语言学习笔记:glue包实现变量传参
glue包介绍 glue包可用于自定义变量,然后通过传参的方式,对字符串部分内容进行自适应修改. 例如:可将日期赋值为:date = as.Date("2019-12-05"),然 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- Go语言学习笔记一: Hello World
Go语言学习笔记一: Hello World 听说Go语言又快又简单.即具有C语言的运行速度,又具有Python语言的开发效率,不知道真的假的.所以特意来学学这门"老"语言. 下载 ...
- 《C# 语言学习笔记》——目录
C# 简介 变量和表达式 流程控制 3.1 布尔逻辑 3.2 goto语句 3.3 分支 3.4 循环 变量的更多内容 4.1 类型转换 4.2 复杂的变量类型 4.3 字符串的处理 函数 5.1 定 ...
- 《C# 语言学习笔记》——C# 简介
1 什么是.NET Framework .NET Framework 是Microsoft为开发应用程序而创建的一个富有革命性的新平台. 1.1 .NET Framework 的内容 .NET Fra ...
随机推荐
- (十三)Activitivi5之流程控制网关:并行
一.概念 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的: 二. 案例 此时当“学生请假”任务节点完成之后,如下图此时有两个任务,必须等到两个任务都完成才会 ...
- 2、Java基础:概念
1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因素 ...
- 记录在苹果X手机上运行遇到的代码Dom被阻塞不更新的一个坑
一.问题产生背景: 开发支付功能,代码逻辑如下:点击支付后,请求后台接口得到流水号以及第三方支付台链接,跳转支付台(在苹果手机则是弹出支付台层):支付完毕后返回支付页面,或中途退出支付台返回支付页面: ...
- jvm系列(十):如何优化Java GC「
转自:https://www.cnblogs.com/ityouknow/p/7653129.html 本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. ...
- EF方式增、删、改、查(基本使用)
右击项目——添加——新建项——数据(C#)——选择ADO.NET实体数据模型——点击添加——然后根据实体数据模型向导来一步步的做. 用到的表 using System; using System.Da ...
- MySQL脏读、虚读、幻读
事务的特性: 原子性:指处于同一个事务中的多条语句是不可分割的. 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态.比如转账,转账前两个账户余额之和为2k,转账之后也应该是2K. 隔离 ...
- You're currently running Fcitx with GUI 错误解决 Fcitx
在英文版ubuntu配置输入法时,点击 Configure Current Input Method 会报以下的错误: You’re currently running Fcitx with GUI, ...
- Linux脑洞——怎么知道我这个Linux是啥时候开的机?
生产环境上,Linux服务器肯定不能随便重启,到底啥时候开的机,这个问题真没啥讨论价值.但是自己在WMWare Workstation下装虚拟机不一样 who -b
- Java 中的多态,一次讲个够之接口实现关系中的多态
上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...
- ggplot2入门与进阶(上)
出处:http://www.cellyse.com/how_to_use_gggplot2_part1/ ggplot2包是基于Wilkinson在<Grammar of Graphics> ...