嵌入式C编程01指针的使用.ppt
《嵌入式C编程01指针的使用.ppt》由会员分享,可在线阅读,更多相关《嵌入式C编程01指针的使用.ppt(36页珍藏版)》请在三一办公上搜索。
1、指针的使用,课程安排,指针的概念指针数据类型指针与其他数据类型指针修饰符,一般的32位CPU都有硬件MMU单元,能将有限的硬件内存(如512M)虚拟成一个较大(如2G)的虚拟内存这样软件可以在一个非常大的范围里使用内存每个内存单元(8bits组成一个内存单元byte)都有一个地址地址是一个无符号的整数表示,通常与CPU字长相等(在32位CPU上就是4byte的空间),内存与地址,1、变量是对程序中数据存储空间(地址和值)的抽象 int num=100;printf(“num is%d,num addr is%pn”,num,3、问题是,怎么通过addr简接获取该地址内保存的值(100)?,变量
2、与地址,1、C定义了一种专门用于表示地址的变量指针 int*addr;/定义指针变量2、将内存中数据的地址赋值给指针变量:表示将指针指向该数据 addr=,指针的由来,用好指针可以:使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值直接操作地址造就了C/C+的强大用不好指针造成:非法内存访问,程序死机或异常内存泄露,减低系统性能指针属于间接访问,指来指去最终变得不可维护,指针是把双刃剑,课程安排,指针的概念指针数据类型指针与其他数据类型指针修饰符,指针的定义,实例:int*pi;char*pc;double*pd;info_t*pinfo;static int*
3、pi;static char*pc;static info_t*pinfo;关键概念:1、指针类型与指针指向对象类型2、指针的值与指针指向对象的值,指针内存大小,指针变量用来表示内存地址,32位CPU上用4byte空间表示地址int*pi;char*pc;double*pd;info_t*pinfo;sizeof(pi)=?sizeof(pc)=?sizeof(pd)=?sizeof(pinfo)=?,指针初始化与赋值,1、初始化为指向对象的地址 int num=100;int paddr=,指针运算,1、取值运算符 int num=100;int*paddr=*paddr=?paddr+1=
4、?*(int*)paddr=?(int*)paddr+1=?,通用(void)指针,指针变量的类型表示指针所指向对象的类型能不能定义一种通用指针,将来根据需要再指向特定对象?void*point=NULL;/void指针,定义不指定指针指向哪种类型数据sizeof(point)=?point+?point-?使用时需要进行强制类型转换:int num=100;char ch=a;void*point=NULL;point=,课程安排,指针的概念指针数据类型指针与其他数据类型指针修饰符,数组与指针,1、数组与指针的关系数组名表示数组首地址,可以把数组名可作指针常量 int arr3=1,2,3;
5、int*p=arr;p+?arr+?*p=?*(p+1)=?*(p+2)=?数组下标操作符内部实现机制:通过指针取值运算符实现 arr2 相当于*(arr+2)数组作为函数参数,实际是转化为指针实现str_cpy(char src,char des)=str_cpy(char*src,char*des)数组作为函数返回值,必须通过指针实现char*str_cpy(char*src,char*des),数组与指针,2、指针数组:即数组的元素为指针类型。char*var10;/10个int型指针的数组 sizeof(var)=?var+1?3、数组指针:即指针的类型为数组(指向数组的指针)。cha
6、r(*var)10;/指向10个int型数组的指针 sizeof(var)=?var+1?4、字符串与指针字符串是属于典型的字符数组,因而通常通过char型指针处理字符串,数组与指针,将字符串直接赋值给指针,表示指针指向字符串内存首地址注意:字符串常量内存分配在只读数据区(RODATA)实例:char*p=“xnf”;char arr=“xnf”;*p?*p+?*+p?*p=X?arr0=X?strcpy(p,“XNF”)?strcpy(arr,“XNF”)?,数组与指针,通过指针数组表示字符串数组char a16=“welcome”,“to”,“xnf”;主函数参数就是通过指针数组实现的:i
7、nt main(int argc,char*argv),结构与指针,1、结构包含指针:结构体中包含指针域变量 如:学生信息中name与phone定义为指针 注意:在程序中动态修改学生信息表中的 name和phone域可行么?,结构与指针,2、指向结构体的指针 结构体变量域通过.访问,而结构体指针域通过-访问 sizeof(info)=?sizeof(p)=?下面这段代码错在哪里?,结构与指针,通过结构体指针传递参数比直接传递结构体变量更高效 实参传递给形参时只拷贝了4个字节,指针与指针,1、指向指针变量的指针 int num=100;int*p=实现指针二级访问:,函数与指针,1、指针作为函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 编程 01 指针 使用
链接地址:https://www.31ppt.com/p-5970468.html