问题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不是空树