你这个定义的是结构体指针,但是这个指针系统并没有为它分配内存,就是楼上说的野指针,其实一般情况下能不用指针的地方就不用,新手很容易弄错的,你这里直接把*time改为time就可以了,把它变为一个结构体变量,然后后面用点.来访问其成员变量即可
野指针使用。建议在main函数内加上这两句:struct time tm; time = &tm;
(1)代码中 只 定义了 一个 结构体指针 struct time *time ,注意了,是指针,而不是结构体变量,所以 time 这个指针只能指向一个结构体变量。也就是说, 代码没有定义任何一个 结构体变量, 系统也就没有分配内存单元给任何一个结构体变量,指针 time 也没有指向任何一个结构体变量, 所以 「time->成员」这样的行为是非法的,会访问一个未知的内存地址,从而引发了内存访问错误。 (2)最简单的修改办法是,在main 函数中先定义一个 struct time 的变量, 然后让 指针 time 指向它,然后后面的代码就不用改了。 (3)当然了,你也可以把 time 定义的前面的 * 去掉,让这个 time 成为一个结构体变量,只不过后面的 访问成员的表达式 要把 ->运算符 改成 . 运算符,麻烦一点。
69,371
社区成员
243,082
社区内容
加载中
试试用AI创作助手写篇文章吧