OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3044|回复: 2

C语言中0地址和空地址NULL的的区别

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2015-12-6
在线时间
15 小时
发表于 2016-6-16 22:51:43 | 显示全部楼层 |阅读模式
本帖最后由 ilikedota 于 2016-6-16 22:57 编辑

我们都知道 NULL == (void *)0。也有这样的写法 a = (void *)3,就是把3强制转化为地址,然后赋给a,这样a就指向地址为3的那个空间,如果按照这样思想,a =  (void *)0,就是让a指向地址为0的那个空间,但是事实上却不是,而是将a设为一个空指针。所以我请问如果真的要访问0地址该怎么办呢?
此外再问个问题,如果有一个指向函数的指针变量void (*prt)(void *)并赋值 (void(*)())0,然后在程序中直接运行(*prt)(*data);这样会不会导致程序崩溃呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2016-6-17 15:26:04 | 显示全部楼层
我是这么认为0地址空间是给系统的(或者内核),单片机上电都会有段系统程序执行(编译器加的),然后才会执行main。还有一点NULL不一定就是0,楼主可自行百度。
30年众生牛马,60年诸佛龙象!
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2016-6-24 07:40:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表