C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么

图片说明

p 没有初始化,也就是没有分配空间。典型的指针错误,不初始化,指针指向哪里呢?

array *p = new array();

 array p;
test(&p);

当然,使用指针应该首先初始化一个空地址的,否则,很容易发生指针地址错误
其次,看了一下你的程序设计,程序本身是定义了一个array的结构体变量,在主函数中却要申请一个指针变量p(它的类型是结构体),一系列操作很繁琐
出现错误也在所难免,建议你不要使用指针,只是用结构体变量就好了,
PS:鉴于你的程序目的清晰,还可以换其他更简单的方式解决问题,复杂的结构是针对一些难以表述的问题设计的,用起来很难让人理解,简单明了
的程序才最美。

使用指针效率高 但风险也高。你的错误在于 没有给指针初始化 就使用其指向的内容。所以使用指针前要先检查是否 有指向的对象。