1 / 26
文档名称:

存储器和指针.pptx

格式:pptx   大小:379KB   页数:26页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

存储器和指针.pptx

上传人:wz_198613 2019/2/17 文件大小:379 KB

下载得到文件列表

存储器和指针.pptx

文档介绍

文档介绍:目录存储器,依旧是存储器指针是个等待降服的魔鬼内存陷阱动态内存分配算法及其代码示例堆栈4种不同的堆栈组织形式(P141)堆栈的作用:传递函数调用的参数保存函数调用的返回地址保存在被调函数中需要使用的寄存器的值实现局部变量调用栈帧和中断栈帧最后一个参数入口参数……函数返回地址局部变量……局部变量保存的调用函数的寄存器值中断返回地址程序状态字局部变量保存的中断前所用到的寄存器调用栈帧结构中断栈帧结构Q:如何理解这两个栈帧结构?调用子函数时,子函数内部如何访问局部变量和入口参数?函数调用返回时,SP指针会发生什么?为何中断栈帧没有参数传递?任务栈空间在使用时注意!定义函数和ISR中的局部变量,特别是定义大型数组和数据结构时。函数的嵌套与递归的深度。中断嵌套的深度库函数需要的栈空间可以采用高水位计的方法调试出任务所需要的栈空间大小。指针&数组inta[10];int*p;……p=a;a++;//ok??p++;//ok??printf(“%d\n”,sizeof(a));printf(“%d\n”,sizeof(p));charb[10]=“123456789”;main(){f(b);}voidf(chara[])//数组作为参数{charc;a++;c=a[0];//c==?sizeof(a)=?sizeof(b)=?}指针&字符串下面两者的区别??1:char*p=“hello,world!”;2:chara[]=“hello,world!”;上面两者的“hello,world!”内容分别存储在哪里?是否可以修改p和a指向的内容?p指向别处后,“hello,world!”会不会丢失?符号名和符号表指针&函数int(*fp)(int)int*fp(int)int*(*fp_array[10])(int)int**fp_array[10](int)int*myfunction(int);int*(*fp)(int);int*ptr;fp=myfunction;ptr=(*fp)(3);ptr=fp(4);恐怖!!!(*(void(*)(void)0)();嘛意思??函数指针的作用多态(polymorphism):指用一个名字定义不同的函数,这函数执行不同但又类似的操作,从而实现“一个接口,多种方法”。多线程(multithreading):将函数指针传进负责建立多线程的API中:例如Win32的CreateThread(...pF...)。回调(call-back):所谓的回调机制就是:「当发生某事件时,自动呼叫某段程序代码」。事件驱动(event-driven)的系统经常透过函数指针来实现回调机制,例如Win32的WinProc其实就是一种回调,用来处理窗口的讯息。多态举例多态举例Q:OS如何实现应用程序和驱动程序之间的对接,又便于为应用程序提供统一的API操作接口,又能区别不同的硬件设备?