定义一个结构体指针但不赋初值,指针为空吗

定义一个结构体指针但不赋初值,指针为空吗,为什么指针会自动指向一个结构体呢

在c语言里,你定义一个int也好,指针也好,不赋值它就只分配内存而不会给内存清零
那么到底分配哪个内存是不确定的,内存里遗留的是什么数据也不确定
如果是int,你打印出来基本可以认为是个随机数
而如果是指针,它也会有个值,相当于指向一个随机地址
那么这就是个典型的野指针
你打印它也能打印出值来
而如果乱给它赋值通常就会报错内存访问冲突

不初始化的话,是个垃圾值,不会是空
为什么指针会自动指向一个结构体呢----不会自动指向一个结构体的啊,定义结构体指针,只是申明而已,表示这个指针用来指向一个结构体对象的地址。你需要给这个指针赋值一个结构体对象的地址,它才会指向一个结构体。

定义一个结构体指针但不赋初值,指针会自动指向一个结构体的原因是,结构体的指针是一个指向结构体的指针,而结构体的指针是一个指向结构体的指针,因此当结构体的指针被定义时,它会自动指向结构体的首地址。

例如,假设我们有一个结构体Person,其中包含一个name和一个age字段,我们可以定义一个指向Person的指针p,但不赋初值。当我们调用p时,它会自动指向Person的首地址,即Person的name字段的地址。

需要注意的是,如果我们在定义结构体指针时没有指定初始值,那么在程序运行时,结构体的指针会自动指向一个未定义的结构体。因此,在使用结构体指针时,需要确保指针指向的结构体已经被定义,否则会导致程序出现错误。

定义一个结构体指针但不赋初值,指针为随机值,不会自动指向一个结构体,也不为空,是个野指针。

定义一个结构体指针但不赋初值,指针值不确定
struct yourstrect *s = NULL;
这才是空

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632