鱼C论坛

 找回密码
 立即注册
查看: 1841|回复: 6

[已解决]关于C语言中结构体的小问题

[复制链接]
发表于 2018-4-2 19:18:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我把程序检查了两三遍还是没发现有什么问题,虽然说是warning,但输出结果不如人意
最佳答案
2018-4-2 20:50:06
粤南靓仔 发表于 2018-4-2 20:24
Emmmm,指针学过了,你说的我能理解,另外我参考了一下甲鱼老师的课件(无视乱码  ) ...

不用改,编译器只是警告你没有初始化。
实在看不下去,你可以:
  1. #include <stdio.h>

  2. struct Book
  3. {
  4.         float price;
  5. };

  6. struct Book Input(struct Book b1)
  7. {
  8.        
  9.         scanf("%f", &b1.price);

  10.         return b1;
  11. }

  12. void Output(struct Book b1)
  13. {
  14.         printf("%f\n", b1.price);
  15. }

  16. int main(void)
  17. {
  18.         struct Book b1;

  19.         b1.price = 0;

  20.         b1 = Input(b1);

  21.         Output(b1);

  22.         return 0;
  23. }
复制代码

如图所示,编译器提示b1未被定义

如图所示,编译器提示b1未被定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-2 19:49:33 | 显示全部楼层
问题大了去了
还没有学到指针吧。
没学到指针,何不就直接到主函数赋值。
2018-04-02_194901.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 20:24:43 | 显示全部楼层
ba21 发表于 2018-4-2 19:49
问题大了去了
还没有学到指针吧。
没学到指针,何不就直接到主函数赋值。

Emmmm,指针学过了,你说的我能理解,另外我参考了一下甲鱼老师的课件(无视乱码 ),感觉还是没什么问题,请问我应该怎么改 .

其他未变

其他未变

我将Input中的形参修改成book

我将Input中的形参修改成book

Output同上

Output同上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 20:34:28 From FishC Mobile | 显示全部楼层
把代码贴出来~包括你的结构体定义~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 20:45:09 | 显示全部楼层
风过无痕丶 发表于 2018-4-2 20:34
把代码贴出来~包括你的结构体定义~

#include<stdio.h>
struct Book
{
        float price;
};
struct Book Input(struct Book b1)
{
        scanf("%f",&b1.price);
        return b1;
}
void Output(struct Book b1)
{
        printf("%f",b1);
}
int main()
{
        struct Book b1;
        b1 = Input(b1);
        Output(b1);
        return 0;
}
这是打出来的代码(如果图片不能正常显示的话)
编译器提示warning C4700: local variable 'b1' used without having been initialized(意思应该是b1未被初始化定义吧 ).

编译器显示b1未定义

编译器显示b1未定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 20:50:06 | 显示全部楼层    本楼为最佳答案   
粤南靓仔 发表于 2018-4-2 20:24
Emmmm,指针学过了,你说的我能理解,另外我参考了一下甲鱼老师的课件(无视乱码  ) ...

不用改,编译器只是警告你没有初始化。
实在看不下去,你可以:
  1. #include <stdio.h>

  2. struct Book
  3. {
  4.         float price;
  5. };

  6. struct Book Input(struct Book b1)
  7. {
  8.        
  9.         scanf("%f", &b1.price);

  10.         return b1;
  11. }

  12. void Output(struct Book b1)
  13. {
  14.         printf("%f\n", b1.price);
  15. }

  16. int main(void)
  17. {
  18.         struct Book b1;

  19.         b1.price = 0;

  20.         b1 = Input(b1);

  21.         Output(b1);

  22.         return 0;
  23. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 21:02:11 | 显示全部楼层
ba21 发表于 2018-4-2 20:50
不用改,编译器只是警告你没有初始化。
实在看不下去,你可以:

这么一改的确没问题了,但我还是很好奇为什么编译器说我未初始化,难道要给b1赋初值吗
另外我将甲鱼老师的代码复制到了VC++6.0下面发现也是类似的报错
甲鱼老师好像是在Linux下编程的,我觉得可能是编程器不同的锅.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表