尚观嵌入式c语言编程进阶笔记——3.指针

一、使用指针好处

(1)能够为调用函数灵活的修改实参变量的值

(2)支持动态内存分配,能够方便的实现动态的数据结构(如二叉树和链表)

(3)可以提高某些程序的效率

(4)实现缓冲方式的文件存取


二、指针是地址

(1)技术上,任何类型的指针都可以指向内存的任何位置,但是指针的操作都是基于类型的

(2)指针的操作是基于指针的基类型而执行的,尽管在技术上指针可以指向对象的其他类型,但指针始终认为它是指向基类型的对象,指针操作受指针类型而不是它所指向的对象类型的支配。


三、指针表达式

1、涉及指针的表达式符合其他c表达式的规则

(1)printf("%p",···);

(2)指针转换

void*型,用来说明基类型未知的指针,它允许函数指定参数,此参数可以接受任何类型指针变量而不必报告类型失配

当内存寓意不清时,也常用于指原始内存

2、指针算术:只可以进行加法和减法操作

(1)指针与整数的加、减法,求指针偏移后的地址

(2)从一个指针减去另一个指针,求出指针偏移量

3、指针比较

主要用于两个或多个指针指向共同对象的情况


四、初始化指针

1、非静态局部指针已声明但未赋值前,其值不确定

2、全局和静态局部指针自动初始化为NULL

3、赋值前使用指针,不仅可能导致瘫痪,还有可能使os奔溃

4、习惯用法:对于当前没有指向合法的内存空间的指针,为其赋值NULL


五、函数指针

void process (char *a,char *b,int(* apple)(const char*,const char*));

其中,int(* apple)(const char*,const char*)就是一个函数指针,传入的是这个函数指针的首地址

在工作中常需要向过程传入任意函数,有时需要使用函数指针构成的数组,如在接受程序运行时,常需要根据语句调用各种函数。此时,用函数指针构成的数组取代大型switch语句是非常方便的,由数组下表实施调用。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值