C语言中,指针在什么情况下为NULL(0)?

指向结构体的指针Bitree *ttypedef struct Nd{ int data; struct Nd *left; struct Nd *right;}Bst;PS:指针大小由操作系统决定,32位系统4个字节,64位8个字节本次实验为32位gcc编译器————————————————————在main函数中,Bst *a;//表示指向一个Bst结构...
摘要由CSDN通过智能技术生成

问题1:

main函数里面的指针什么时候为NULL?

问题2:

自定义函数或在全局里面的指针什么时候为NULL?

问题3:

指针大小是怎么判断的?

问题4:

结构体内的指针在什么情况下为NULL?

——————————————————————————————

//指向结构体的指针Bitree *t

typedef struct Nd{
   
    int data;
    struct Nd *left;
    struct Nd *right;
}Bst;

PS:指针大小由操作系统决定,32位系统4个字节,64位8个字节

本次实验为32位gcc编译器————————————————————
在main函数中,
Bst *a;
//表示指向一个Bst结构的指针,指针大小为4个字节
//也就是sizeof(a) = 4;sizeof(*a)=12;sizeof(&a)=4

注意:sizeof()的值是编译器给的,而printf(“%p”),是操作系统给的地址值,所以64位的win7下打印的变量地址还是64位二进制,不受32位编译器影响

//在main函数里面的指针
int main(){
Bst *a;
return 0;}
如果进行if(a){
    printf("a不是空树!")}
那么,a还是会输出这个printf,因为a是野指针,如下图依次输出
 				&a
 				a
 				*a
 	野指针就是随机数,可见a指向的地址是00000002
 	反之,如果Bst *a=(Bst*)malloc(sizeof(Bst));
 	再判断也会输出a不是空树 	
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值