嵌入式C语言开发学习笔记 —— 指针

充实,便是一种幸福。
1. 指针的本质

指针的本质是一个地址,指针变量就是存放这个地址的存储单元。
 

2. 指针3要素
  • 指针变量本身的地址。
  • 指针变量的值,即一个地址。
  • 指针所指地址的内容。
void main(void)
{
	int value = 666;
	int* pointer = NULL;

	printf("指针变量本身的地址: %p\n", &pointer);
	printf("指针变量的值: %p \n", pointer);
	
	//printf("value: %x \n", *pointer); 
	//此时指针变量所指地址为空,若执行,则程序会crash 

	pointer = &value;

	printf("指针变量本身的地址: %p\n", &pointer);
	printf("指针变量的值: %p\n", pointer);
	printf("指针变量所指地址的内容:%d\n", *pointer);
}

结果:
指针变量本身的地址: 00BDFCC8
指针变量的值: 00000000
指针变量本身的地址: 00BDFCC8
指针变量的值: 00BDFCD4
指针变量所指地址的内容:666

 

3. 指针的类型

(1) 指针的数据类型为指针所指地址内容的数据类型
(2) void *
 

4. 几种特殊指针

(1) 空指针:未分配或尚未指向任何地方的指针。C语言中通常用NULL表示。

  • 典型应用
    □□ malloc()分配内存失败时,返回一个空指针;
    □□ 指针初始化时,不知道指向哪儿时,可以初始化为空指针;

  • 注意事项

(2) 未初始化的指针:表示指针被定义了,但未被初始化。未被初始化的指针,可以指向任何地方

  • 注意事项:对未初始化的指针进行引用,因为一切都不可知,所以是件非常危险的事情。因此,指针在创建时,要么指向合法的内存,要么初始化为空指针。

(3) 野指针:指向的地址不确定的指针。

  • 野指针的产生
    □□ 未初始化的指针,乱指一通,即为野指针。
    □□ malloc()动态申请的内存释放后,未将指向该内存的指针置为空指针。
    □□ 返回局部变量指针

(4) 函数指针指向函数地址的指针。利用函数指针可以知道函数在内存中的位置,因此可以利用函数指针调用函数。

  • 函数指针声明:<类型> (*函数指针变量名)(函数参数列表)。

  • 多态:一个名字定义不同的函数,这函数执行不同但类似的操作,从而实现“一个接口,多种方法”。

  • 回调:系统函数调用用户函数,下层函数调用上层函数。

    正常调用:用户函数调用系统函数,上层函数调用下层函数。
    事件驱动采用回调机制

  • 多线程

(5) 字符串指针:指向一个字符串存储地址的指针。
 

5. 指针使用注意事项⚠️
  • 指针在创建时,要初始化。
  • 指针在使用时,要检查它是否为null。
  • 动态内存释放后,需将该内存的指针置为null。
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值