程序编译无误但是没有显示输出

清湫 2019-05-21 09:19:50
感觉我输入输出也没错
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-05-21
  • 打赏
  • 举报
回复
明显的野指针问题,根本就没有定义time的实体
自信男孩 2019-05-21
  • 打赏
  • 举报
回复
野指针使用。建议在main函数内加上这两句:struct time tm; time = &tm;
拥抱Linux 2019-05-21
  • 打赏
  • 举报
回复
(1)代码中 只 定义了 一个 结构体指针 struct time *time ,注意了,是指针,而不是结构体变量,所以 time 这个指针只能指向一个结构体变量。也就是说, 代码没有定义任何一个 结构体变量, 系统也就没有分配内存单元给任何一个结构体变量,指针 time 也没有指向任何一个结构体变量, 所以 「time->成员」这样的行为是非法的,会访问一个未知的内存地址,从而引发了内存访问错误。
(2)最简单的修改办法是,在main 函数中先定义一个 struct time 的变量, 然后让 指针 time 指向它,然后后面的代码就不用改了。
(3)当然了,你也可以把 time 定义的前面的 * 去掉,让这个 time 成为一个结构体变量,只不过后面的 访问成员的表达式 要把 ->运算符 改成 . 运算符,麻烦一点。
CaptainXue 2019-05-21
  • 打赏
  • 举报
回复
把代码粘贴出来
清湫 2019-05-21
  • 打赏
  • 举报
回复
引用 5 楼 袁君元 的回复:
你这个定义的是结构体指针,但是这个指针系统并没有为它分配内存,就是楼上说的野指针,其实一般情况下能不用指针的地方就不用,新手很容易弄错的,你这里直接把*time改为time就可以了,把它变为一个结构体变量,然后后面用点.来访问其成员变量即可
嗯嗯!!
清湫 2019-05-21
  • 打赏
  • 举报
回复
引用 3 楼 自信男孩 的回复:
野指针使用。建议在main函数内加上这两句:struct time tm; time = &tm;
谢谢!!
清湫 2019-05-21
  • 打赏
  • 举报
回复
引用 2 楼 拥抱Linux 的回复:
(1)代码中 只 定义了 一个 结构体指针 struct time *time ,注意了,是指针,而不是结构体变量,所以 time 这个指针只能指向一个结构体变量。也就是说, 代码没有定义任何一个 结构体变量, 系统也就没有分配内存单元给任何一个结构体变量,指针 time 也没有指向任何一个结构体变量, 所以 「time->成员」这样的行为是非法的,会访问一个未知的内存地址,从而引发了内存访问错误。
(2)最简单的修改办法是,在main 函数中先定义一个 struct time 的变量, 然后让 指针 time 指向它,然后后面的代码就不用改了。
(3)当然了,你也可以把 time 定义的前面的 * 去掉,让这个 time 成为一个结构体变量,只不过后面的 访问成员的表达式 要把 ->运算符 改成 . 运算符,麻烦一点。
谢谢!!!我知道了!!
CaptainXue 2019-05-21
  • 打赏
  • 举报
回复
你这个定义的是结构体指针,但是这个指针系统并没有为它分配内存,就是楼上说的野指针,其实一般情况下能不用指针的地方就不用,新手很容易弄错的,你这里直接把*time改为time就可以了,把它变为一个结构体变量,然后后面用点.来访问其成员变量即可

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧