空指针、void指针与函数指针

一、空指针是一种特殊的指针  一个指针变量指向空指针,表示该指针处于空闲状态下,不指向任何地址

P=NULL;表示指针变量P指向空指针;

同时任何不用的指针都必须指向空指针,避免野指针的出现。


二、通用指针可以指向任何数据类型,也称void指针,可以把任何类型的指针变量赋给void指针;

int *PA;

void *PB;

PB=(void*)PA;


同样,也可以把void指针赋给任何类型的指针变量,如果通用指针类型与被赋值指针的数据类型不一致时,要进行强制类型转换。

int *PA;

void *PB;

PA=(int*)PB;


测试 用变量a给出下面的定义

1、一个整型数;int a;

2、一个指向整型数的指针;int *a;
3、一个指向指针的的指针,它指向的指针是指向一个整型数 int **a;
4、一个有10个整型数的数组 int a[10]
5、一个有10个指针的数组,这些指针是指向整型数的  int *a[10]
6、一个指向有10个整型数数组的指针  int (*a)[10]
7、一个指向函数的指针,该函数有一个整型参数并返回一个整型数int(*a)(int)

三、函数指针就是指向函数的指针,该指针存放的是函数的地址,利用该指针可以调用,也可以知道函数的地址
注意区别
int*fun(char*);//这是一个返回值是整型指针的fun()函数
int (*fun)(char*);//这才是一个函数指针,能够指向返回值是int型,有一个char*参数的函数。
函数指针使用:
例子:
Int ptr; int fn(int); int(*Fp)(int);
指出下面是否合法?
Fp = fn;//正确 可以把一个函数地址赋给一个函数指针(函数名就代表函数地址类似于数组名代表数组地址)
Fp = fn(5);//错误 不能够把函数调用赋给函数指针
Fp = &ptr;//错误,不能把非函数地址赋给函数指针(ptr的地址不在代码区)










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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值