老jia鱼 发表于 2020-4-25 17:05:19

关于NULL指针的问题

新人,概念不理解,求大家帮忙 谢谢
C语言中NULL即宏定义:#define NULL ((void *)0)
可不可以理解成返回地址0的void指针呢?
如果是这样, int *p2 = NULL 这样就是 int * p2= (void *)0吧。
可是 作为p2作为指向整型的指针,怎么可以被void指针赋值呢?

倒戈卸甲 发表于 2020-4-25 18:24:33

当然可以这样理解。反正void指针可以指向任何数据类型。

倒戈卸甲 发表于 2020-4-25 18:51:32

之前没理解楼主啥意思,过了会儿才醒过味来。你的意思应该是int* p1=(int*)NULL才合法吧。这种写法叫显示转换,把void*转化为int*。但其实C的编译器支持自动隐试转换,你不写编译器也给转换,你指针什么类型,编译器就把它转成什么类型。

1241702927 发表于 2020-4-25 23:31:09

它实际转换的时候是 int * p2= (int *)(void *),只是转换成(int *)的编译器帮你自动完成了
页: [1]
查看完整版本: 关于NULL指针的问题