电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C--补充知识VIP免费

C--补充知识_第1页
1/46
C--补充知识_第2页
2/46
C--补充知识_第3页
3/46
C++语言基础——补充知识运行时内存指针和内存地址1.指针地址2.指针和数组3.动态内存分配函数调用和内存输入输出(cout和cin)目录运行时内存指针和内存地址指针地址指针和数组动态内存分配函数调用和内存输入输出(cout和cin)什么是“计算机”?图灵机1937(计算机理论之父)是么是“算法”?问题的可计算性人工智能的界限冯·诺依曼思想1946(现代计算机之父)1.用二进制代码表示程序和数据;2.计算机采用存储程序的工作方式;3.计算机硬件由存储器、运算器、控制器、输入设备和输出设备组成。程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈2、堆区(heap)一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区常量字符串就是放在这里的。程序结束后由系统释放5、程序代码区存放函数体的二进制代码。例inta=0;全局初始化区char*p1;全局未初始化区main(){intb;栈chars[]="abc";栈char*p2;栈char*p3="123456";123456\0在常量区,p3在栈上。staticintc=0;全局(静态)初始化区p1=(char*)malloc(10);p2=(char*)malloc(20);分配得来得10和20字节的区域就在堆区。strcpy(p1,"123456");123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。}栈内存的作用-函数调用堆内存–动态分配目录运行时内存指针和内存地址指针地址指针和数组动态内存分配函数调用和内存输入输出(cout和cin)intmain(){chara=‘A’;intb=1;floatc=2;doubled=3;return0;}650000002a000000030b000000400000050100c0000006000000700000080200000090000010内存地址值:内存单元中存放的数据地址:系统分配给变量的内存单元的起始地址指针变量存放地址的变量称为指针变量,它用来指向另一个变量,通常用*表示。intmain(){inti=65;int*i_pointer;i_pointer=&i;return0;}000000020000002000000E650000004&:取变量的首地址,即指针;*:取指针所指向的地址中的值;inti,j,*p;p=&i;*p=3;j=*p+2;100010041008ijp定义后1000100410081000ijpp=&i31000100410081000ijp*p=3310001004100851000ijpj=*p+2指针操作课堂练习1.运行时内存一般分为哪几部分,各有何作用?2.请绘制以下程序内存示意图。voidswap(inta,intb){inttemp;temp=a;a=b;b=temp;}intmain(){intm,n;scanf(“%d%d”,&m,&n);swap(m,n);printf(“%d%d”,m,n);return0;}3.请绘制右边程序段内存示意图。inti=65;int*i_pointer;i_pointer=&i;charkk=‘A’;char*pKK=&kk;charjj=*pKK;定义和使用指针指针是指向某种类型对象的复合数据类型,指针型数据中存放的是它所指向的对象的存储器地址(内存地址)。定义指针变量的语法形式为:数据类型数据类型**标识符;标识符;////其中数据类型代表指针指向的数据的类型;标识符是指针其中数据类型代表指针指向的数据的类型;标识符是指针变量的名字;标识符前面的星号“变量的名字;标识符前面的星号“*”*”是定义指针的标志。是定义指针的标志。例如:int*ptr1;float*ptr2使用指针使用指针前必须给它赋初值,使它确实地指向某个对象。否则它的初值不确定。使用符号“&”给指针变量赋值。这里符号“&”称为取地址运算符,功能是取得某个对象或变量的存储器地址。例如:inti,*ptr1;ptr1=&i;假设整型变量i在存储器中的地址为1000,指针变量ptr1的内存地址为2000,指针ptr1和它所指向的变量i的关系如图4.3所示为指针赋值后,就可以使用指针和解引用操作符*来操作它所指向的对象,语法形式为:**指针名指针名这时表达式“**指针名”指针名”和指针所指向的对象或变量名是等价的。例如*ptr1和i是等价的。1000······存储器用...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部