




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1计算的本质n从根本上说,计算就是执行从根本上说,计算就是执行CPU指令。指令。n实现自动计算,就一定要保存程序实现自动计算,就一定要保存程序(内存内存)2CPU对内存的操作Von Neumann CPUMemoryAddressDataRead / Write control8bit1Byte = 8bit0012FF870012FF810012FF7F0012FF7D0012FF7C0012FF800012FF7E3内存的内容n内存中存放的是可执行文件内存中存放的是可执行文件(.exe)。n.exe与与.c等效。等效。n.exe是是.c中的代码转换成了指令与数据(机器中的代码转换成了指令与
2、数据(机器码)。码)。n每个内存单元中,存放了每个内存单元中,存放了指令指令或者或者数据数据。4对内存的访问n用变量用变量对应对应某段内存,可避免某段内存,可避免直接直接使用内存地址使用内存地址n内存的内存的2个方面:地址个方面:地址+内容内容n通过变量通过变量(符号符号)对内存内容进行读对内存内容进行读/写写0012FF7C50012FF785int x = 5;int y = x;5符号表nexe文件中,根据obj的符号表把标识符变成地址。(obj中的符号表记录的是相对地址-从0开始)0012FF7C0012FF7D0012FF7F0012FF810012FF7E0012FF800012F
3、F820012FF83符号类型地址(符号值)其他aint0012FF7C funvoid0012FF82 100int a = 100;void fun() 100变量值变量名0012FF7C6在代码中取地址 & (取址=取地址值 )n地址值地址值是常量(变量的地址,是只读的)是常量(变量的地址,是只读的)n不能对不能对地址值地址值取地址取地址(区分地址和地址值区分地址和地址值)n只能对变量取址只能对变量取址(&右边是右边是符号符号标识符标识符)n地址有类型,地址值是字面值。地址可以地址有类型,地址值是字面值。地址可以取内容取内容。n技巧:在编程时你可以忘记符号表,而把技巧:在
4、编程时你可以忘记符号表,而把内存内内存内容容等同于等同于变量变量,内存地址内存地址等同等同&变量。变量。int a = 100;printf(%pn,&a);0012FF7C1007在代码中取内容*(取内存的内容)int a = 100;int b = *(&a);printf(a=%dn,a);printf(&b=%pn,&b);printf(b=%dn,b);0012FF7C1000012FF781008在代码中取内容*(取内存的内容)n只能对地址取内容只能对地址取内容(*右边是地址,地址右边是地址,地址=指针指针),不能对非指针变量取内容。不能对非
5、指针变量取内容。n对于指针变量,取内容即指针所保存地址的内容,对于指针变量,取内容即指针所保存地址的内容,该内容可以读写。该内容可以读写。n*与与&是互逆的操作是互逆的操作n*与与&的不同的不同n&由变量声明决定(不读写内存)由变量声明决定(不读写内存)n*根据地址读取内存根据地址读取内存9操作与求值n操作符操作符(* & - + % =等等等等)通过类型进行操作,通过类型进行操作,可以认为,操作是类型的行为。可以认为,操作是类型的行为。n在操作之前,都会对操作对象在操作之前,都会对操作对象求值求值(表达式求值表达式求值)。n操作对应计算机指令,操作对象对应数据
6、。操作对应计算机指令,操作对象对应数据。n优先级优先级 () . -,+ -, * &, =int a = 100;int b = a + 1; int *p = &a;p+; /p=p+1;10偏移地址取内容 n取内容,可读写。取内容,可读写。n左边是地址。左边是地址。 (*右边是地址右边是地址)n是一种危险操作,它不做越界检查。是一种危险操作,它不做越界检查。int a = 10;int b = 8;int c = 3;printf(&b)1=%dn,(&b)1);printf(&b)0=%dn,(&b)0);printf(&b)-1
7、=%dn,(&b)-1);读写内存nint a = 56;int *p = &a;n写:写:na = 56;n*p = 100; /*(&a) = 100;np0 = 200; /(&a)0 = 200;n读:读:nint b = a;nint c = *p;/ int c = *(&a);nint d = p0; / int d = (&a)0; 1112地址变量指针(图示)0012FF78 = &p p = 0012FF7Ca = 1000012FF7C = &a000000640012FF7Cint a = 100;int
8、*p = &a;/定义定义printf(*p=%dn, *p); /操作操作0012FF780012FF7C指向指针的指针13130012FF78 = &p p = 0012FF7Ca = 1000012FF7C = &aint a = 100;int *p = &a;int *q = &p;0012FF74 = &q q = 0012FF7814地址变量指针n地址变量也是变量,普通变量通常存储地址变量也是变量,普通变量通常存储字面值字面值,地址变量存储地址变量存储地址值地址值。n指针就是地址,指针指针就是地址,指针(变量变量)存储存储地址值地址
9、值。n指针的大小固定指针的大小固定=机器字长。机器字长。n指针变量的指针变量的偏移偏移:pi, p+, p-, p+i, p-iint a = 100;int *p = &a;/定义定义printf(*p=%dn p0=%dn, *p , p0 );15引用 C+n定义引用时,必须同时对其进行初始化。定义引用时,必须同时对其进行初始化。n引用是通过指针实现的。引用是通过指针实现的。n引用也占用地址空间引用也占用地址空间n引用是被引用变量的别名(看起来像)引用是被引用变量的别名(看起来像)int a = 100;int &b = a;/定义定义printf(&b=%pn
10、&a=%pn,&b,&a);/操作操作16数组n数组名称指代数组,其值为其地址值。数组名称指代数组,其值为其地址值。(类似变量:类似变量:&a)n数组名称是数组的首地址;即第一个元素的地址。数组名称是数组的首地址;即第一个元素的地址。 (类似指针类似指针a2),它是地址常量。,它是地址常量。n数组:一组地址数组:一组地址连续连续且数据类型且数据类型相同相同的元素构成的元素构成的集合的集合int a3 = 7,3,5;printf(a1=%dn &a=%pn,a1,&a); 使用数组名称2022-5-817int a3 = 1, 2, 3;int
11、*p = a;int (*q)3 = &a;a1 = 100p1 = 101;(*q)0 = 88;/ 88, 101, 3for循环n常用于数组常用于数组(或有序容器或有序容器)元素的遍历元素的遍历nfor:三部分三部分(初始化,循环条件,步长变化初始化,循环条件,步长变化)18int sum = 0;int a3 = 1, 2, 3;int i;for (i = 0; i 3; i+)sum = sum + ai;19& * 总结*&定义定义 int a=10;int *p=&a;指针指针int b=11;int &q = b;引用引用(C+)int
12、 c3 =1,2,3;数组数组操作操作 *p = 100;int m=a;int n=*p;取内容取内容int *r=&b;取地址取地址c0 = 5;int k=c2;偏移取内容偏移取内容优先级: , +, * &20字符串nC没有字符串的类型;字符串是一个带结尾标记没有字符串的类型;字符串是一个带结尾标记的字符数组。的字符数组。nchar ch6 =c,h,i,n,a,0;nchar ch = china;nchar ch = china;nchar* ch = china;21字符串的拷贝char* ch = china;char str10;strcpy(str, ch);strcpy(str, china);22思考n程序是如何运行的?程序是如何运行的?n程序所需的容量比机器内存还要大,该怎么办?程序所需的容量比机器内存还要大,该怎么办?n每个机器的内存大小不尽相同,如何确定同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽省濉溪县联考英语八下期末监测试题含答案
- 天津事业单位试题及答案
- 团校试题及答案
- 2025年能源管道建设与维护策划合作协议
- 2025年策划业务合作优化协议书
- 2025年数据分析行业咨询合作协议
- 2025年修订版股东协议
- 2025年工伤赔偿标准协议书范文
- 大数据时代出版业的精准营销策略
- 健美操文化传播的创新路径与实践
- 2025广东劳动合同样本新(合同版本)
- 2025年高级车辆钳工(三级)技能认定理论考试题库(含答案)
- 粮食公司笔试题库及答案
- 闯关东人口迁移情景课件高中地理人教版必修二
- 2025年绿色食品授权协议
- 《楼地层阳台雨棚》课件
- 《企业预算编制》课件
- 2025年广西广电网络公司招聘笔试参考题库含答案解析
- 有载分接开关技术交流课件
- DB51T 1349-2011 油菜脱粒机规范
- DB31∕T 1148-2019 水量计量差错的退补水量核算方法
评论
0/150
提交评论