- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式C编程01指针的使用
指针与指针 1、指向指针变量的指针 int num = 100; int *p = num; int **pp = p; 实现指针二级访问: 函数与指针 1、指针作为函数的参数 向函数传递数组、字符串、结构: 如strc_py、show_info 作为函数的输出参数 例如:实现交换两个整数的函数 void swap(int a, int b) 传值,形参值改变并不能带回给实参 传址,在函数内改变地址内保存的内容 函数与指针 问题: 要在函数能改变指针的值,怎么通过输出参数返回? 例如: void get_mem(char *pmem, int size) { pmem = malloc(size); } 动态分配的内存能通过pmem带回么? 不能!要将实参指针的地址传递给形参(二级指针)才能实现! 更直接的方法是通过函数返回值实现 函数与指针 2、指针作为函数的返回值 返回字符串、动态分配的内存等,如 *strcpy, *malloc 注意返回地址的有效性(函数执行完毕后该地址未被回收) 下面两个函数哪个是合法的? 函数与指针 3、指向函数的指针 函数存放在TEXT段,同样具有地址 函数名就是函数在TEXT段的入口地址 跟数组名一样,函数名也可以看作是一个指针常量 所以,函数名也可以赋值给指针变量,那么该指针变量类型呢? 函数指针类型!通过函数指针,也可以间接调用函数。 函数与指针 函数指针的应用: 1、作为函数参数实现回调函数 所谓回调函数是指通过调用其他函数反 过来调用某个函数 模拟面向对象的多态,在UI组件的大量使 用 函数与指针 2、作为结构体的动作域 模拟面向对象的类,在Linux内核中大量使用 作为一个现实中的对象,不但有数据属性,还需要有行为属性 使用对象行为 课程安排 指针的概念 指针数据类型 指针与其他数据类型 指针修饰符 const修饰符 1、const修饰符的作用:限定一个变量不允许被改变(只读) 如:const int num = 100; //num是只读整型变量 const int arr[3] = {10, 20, 30}; //arr是只读整型数组 num = 200 ? arr[0] = 100 ? arr[1] = 200? 2、const指针: 指向变量的只读指针,指针本身只读,但指向的对象非只读 如:int num1 = 100; int num2 = 200; int* const p = num1; *p = 200 ? p = num2 ? const修饰符 3、指向const变量的指针: 指向只读变量的指针,而指针本身不是只读的 如: const int num1 = 100; const int num2 = 200; const int *p = num1; *p = 200 ? p = num2 ? 注意: const也可以在int之后,如int const num1 = 100; int const *p =num1 4、指向const变量的const指针: 指针和指向的变量都是只读的 如: const int
文档评论(0)