设计基础(徐明星)w02-3-chap03-关于代数思维的思考讨论-1_第1页
设计基础(徐明星)w02-3-chap03-关于代数思维的思考讨论-1_第2页
设计基础(徐明星)w02-3-chap03-关于代数思维的思考讨论-1_第3页
设计基础(徐明星)w02-3-chap03-关于代数思维的思考讨论-1_第4页
设计基础(徐明星)w02-3-chap03-关于代数思维的思考讨论-1_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于变量的讨论

(一)关于变量的讨论(1)若不设定初始值,变量“初始值”是?2#include<iostream>usingnamespacestd;intmain(){ intnum; cout<<num<<endl; return0;}//task-13如果变量自定义后没有赋值,则变量的内存单元中的值是一个随机的数值,在不同的机器上、在不同的环境下,单元的内容是不同的。关于变量的讨论(2)变量为什么要指定类型?类型信息,用来做什么?不同类型,差别是什么?4#include<iostream>usingnamespacestd;intmain(){ inta=2; cout<<"a="<<a<<endl; cout<<"a/4="<<a/4<<endl;//结果很奇怪!

return0;}//task-9.1变量为什么要指定类型?类型信息,用来做什么?不同类型,差别是什么?5#include<iostream>usingnamespacestd;intmain(){

float

a=2; cout<<"a="<<a<<endl; cout<<"a/4="<<a/4<<endl;//这次结果正确了!

return0;}//task-9.2关于变量的讨论(2)关于变量的讨论(2)变量为什么要指定类型?类型信息,用来做什么?不同类型,差别是什么?6类型的用途——告诉计算机如何操作数据。即:类型“暗示”了运算的操作办法。不同类型的数值,它们参与运算的“操作规则”是不同的。例如:整数相加,需要最末一位(个位)对齐之后进行;而小数相加,则需要的是小数点对齐!还有,对于字符串类型而言,对它们最有意义的“加法操作”,显然应该是将两个串拼接起来!这完全与数的加法有天壤之别!7#include<iostream>#include<string> //字符串类型#include<complex> //复数类型usingnamespacestd;intmain(){ stringstr1="TsinghuaUniversity,"; stringstr2="DepartmentofComputer"; cout<<"str1="<<str1<<endl; cout<<"str2="<<str2<<endl; cout<<"str1+str2="<<str1+str2<<endl;

complex<int>c1(3,4),c2(4,5);//下学期的C++课程再详细解释

cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; cout<<"c1+c2="<<c1+c2<<endl; cout<<"c1*c2="<<c1*c2<<endl; return0;}//task-118而指针类型的加减运算,更是遵循一种截然不同的运算规则!(见前面的例子)9类型真的好重要啊关于变量的讨论(3)变量存储在哪里——变量内存单元地址10#include<iostream>usingnamespacestd;intmain(){ intn; floatf; doubled=1.23;//0.0; charc=‘*’; cout<<"addressofn:"<<&n<<endl; cout<<"addressoff:"<<&f<<endl; cout<<"addressofd:"<<&d<<endl; cout<<“addressofc:”<<&c<<endl;//这行的结果很奇怪!

//&:取得变量内存单元地址的“操作符”!

return0;}//task-611&是一个运算符,功能是“取变量的地址”,所以&n会返回变量n的内存单元地址。

对于内存单元地址,cout会自动以16进制形式输出地址值。在这种形式输出结果中,前2个字符固定为0x或0X。在输出字符变量的内存地址时,cout采取另外的特殊处理方式——不是输出字符变量的内存单元地址,而是输出内存单元存储的字符内容,且将相邻的后续内存单元内容也以字符形式输出出来,直至碰到一个内容为0的内存单元才停止。doubeld=1.23;doubeld=0.0;12内存单元地址内存单元内容内存单元名称(变量名)22FF47n3(31~24)22FF46n2(23~16)22FF45n1(15~8)22FF44n0(7~0)&n22FF43f3(31~24)22FF42f2(23~16)22FF41f1(15~8)22FF40f0(7~0)&f22FF3Fd7(63~56)22FF3Ed6(55~48)22FF3Dd5(47~40)22FF3Cd4(39~32)22FF3Bd3(31~24)22FF3Ad2(23~16)22FF39d1(15~8)22FF38d0(7~0)&d22FF37c(7~0)&c变量内存单元地址,简称变量地址关于变量的讨论(4)变量地址(内存单元地址)是什么类型??13#include<iostream>usingnamespacestd;intmain(){ intn=12; floatf=3.4f; doubled=56.78;//0.0; charc='9'; cout<<"addressofn:"<<&n<<endl; cout<<"addressoff:"<<&f<<endl; cout<<"addressofd:"<<&d<<endl; cout<<"addressofc:"<<&c<<endl;

变量地址,如何用新的变量来保存?即:应该定义什么类型的变量,才能保存“变量地址”?这只是输出变量n,f,d,c的地址,并非保存变量地址!(其中,&c是特殊情况)14

int*pn=&n; float*pf=&f; double*pd=&d; char*pc=&c; cout<<"pn:"<<pn<<endl; cout<<"pf:"<<pf<<endl; cout<<"pd:"<<pd<<endl; cout<<"pc:"<<pc<<endl;

return0;}//task-7.1TYPE*var;通常称为:var是TYPE类型的指针变量。TYPE类型的变量,其“地址”值,只能赋值给TYPE类型所对应的指针类型变量,即:用TYPE*定义的变量!这是输出变量pn,pf,pd,pc的内存单元值15这是设置doubled=0.0;时的程序输出。(task-07.1)cout<<"pn:"<<pn<<",addressofpn:"<<&pn<<endl;cout<<"pf:"<<pf<<",addressofpf:"<<&pf<<endl;cout<<"pd:"<<pd<<",addressofpd:"<<&pd<<endl;cout<<"pc:"<<pc<<",addressofpc:"<<&pc<<endl;若将代码修改为:则新版本程序的输出结果为:(task-07.2)#include<iostream>usingnamespacestd;intmain(){

///同前。略。 *pn=999; *pf=888; *pd=777; *pc='A';关于变量的讨论(5)对变量地址对应的内存单元的读/写操作16对pn,pf,pd,pc中存储的地址值所对应的内存单元进行赋值操作变量n的值n0X22FF440X22FF44pn0X22FF30999n0X22FF440X22FF44pn0X22FF30地址单元名称

cout<<"n:"<<n<<"*pn="<<*pn<<endl; cout<<"f:"<<f<<"*pf="<<*pf<<endl; cout<<"d:"<<d<<"*pd="<<*pd<<endl; cout<<"c:"<<c<<"*pc="<<*pc<<endl; return0;}//task-8.1关于变量的讨论(5)对变量地址对应的内存单元的读/写操作17从pn,pf,pd,pc中存储的地址值所对应的内存单元中,读取内存单元的内容999n0X22FF440X22FF44pn0X22FF3018999n0X22FF440X22FF44pn0X22FF30地址单元名称19999n0X22FF440X22FF44pn0X22FF30因为pn变量的值“正好等于”变量n的内存地址,所以形象地称变量pn是“指向”变量n的一个“指针”,简称为“指针”变量pn、指针pn。图示为:0X2ED2300X22FF44Pos_idx_3可能有多个内存单元的值是同一个内存单元的地址(如pn单元和Pos_idx_3单元),即同一单元可能会有多个指针变量“指向”它。但一个指针变量,只能指向一个内存地址。pn9999990X22FF440X22FF440X22FF300X2ED2300X22FF301000X22FF400X22FF3C0X2ED2303.14250X22FF2C960.1230X2ED22C0X2ED22C0X22FF480X2ED22889.6请画出图中的所有指针箭头9990X24FF470X25FF911000X27F14F3.1425960.12300X22FF440X213D440X22FF440X24FF470X25FF910X27F14F另一个示例22&var:通过运算返回变量var在内存中单元地址,在该地址(内存单元)中,存储的是var的值。pn=&var;:将变量var的地址,保存到变量pn中,即pn所在内存单元中存放的是变量var的地址(内存单元地址)。cin>>*pn;*pn=value;:从键盘输入数值或将变量value的值赋给(写入)指定内存单元中,该目的内存单元的地址是由变量pn的值确定的。cout<<*pn;var2=*pn;:将指定内存单元中存放的数值取出来(输出或赋给另一个变量),该内存单元的地址是由变量pn的值确定的。小结#include<iostream>usingnamespacestd;intmain(){ intn1=12,n2=87; charc1='9',c2='B'; cout<<"n1:value="<<n1<<"address="<<&n1<<endl; cout<<"n2:value="<<n2<<"address="<<&n2<<endl; cout<<"c1:value="<<c1<<"address="<<&c1<<endl; cout<<"c2:value="<<c2<<"address="<<&c2<<endl;关于变量的讨论(6)变量地址(内存单元地址)的加减操作23PART1

int*pn=&n1; char*pc=&c1; cout<<"pn:"<<pn<<endl; cout<<"pn+1:"<<pn+1<<endl; cout<<"pn-1:"<<pn-1<<endl;

cout<<"pc:"<<pc<<endl; cout<<"pc+1:"<<pc+1<<endl; cout<<"pc-1:"<<pc-1<<endl;变量地址(内存单元地址)的加减操作24

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论