定义一个结构体指针但不赋初值,指针为空吗,为什么指针会自动指向一个结构体呢
在c语言里,你定义一个int也好,指针也好,不赋值它就只分配内存而不会给内存清零
那么到底分配哪个内存是不确定的,内存里遗留的是什么数据也不确定
如果是int,你打印出来基本可以认为是个随机数
而如果是指针,它也会有个值,相当于指向一个随机地址
那么这就是个典型的野指针
你打印它也能打印出值来
而如果乱给它赋值通常就会报错内存访问冲突
不初始化的话,是个垃圾值,不会是空
为什么指针会自动指向一个结构体呢----不会自动指向一个结构体的啊,定义结构体指针,只是申明而已,表示这个指针用来指向一个结构体对象的地址。你需要给这个指针赋值一个结构体对象的地址,它才会指向一个结构体。
定义一个结构体指针但不赋初值,指针会自动指向一个结构体的原因是,结构体的指针是一个指向结构体的指针,而结构体的指针是一个指向结构体的指针,因此当结构体的指针被定义时,它会自动指向结构体的首地址。
例如,假设我们有一个结构体Person,其中包含一个name和一个age字段,我们可以定义一个指向Person的指针p,但不赋初值。当我们调用p时,它会自动指向Person的首地址,即Person的name字段的地址。
需要注意的是,如果我们在定义结构体指针时没有指定初始值,那么在程序运行时,结构体的指针会自动指向一个未定义的结构体。因此,在使用结构体指针时,需要确保指针指向的结构体已经被定义,否则会导致程序出现错误。
定义一个结构体指针但不赋初值,指针为随机值,不会自动指向一个结构体,也不为空,是个野指针。
定义一个结构体指针但不赋初值,指针值不确定
struct yourstrect *s = NULL;
这才是空
注:本文以一个例子来演示广义表的基本操作,含有一个头文件《GList.h》和一个测试源文件《main.cpp》