粤南靓仔 发表于 2018-4-2 19:18:37

关于C语言中结构体的小问题

我把程序检查了两三遍还是没发现有什么问题,虽然说是warning,但输出结果不如人意{:10_266:} {:10_266:}

ba21 发表于 2018-4-2 19:49:33

问题大了去了
还没有学到指针吧。
没学到指针,何不就直接到主函数赋值。

粤南靓仔 发表于 2018-4-2 20:24:43

ba21 发表于 2018-4-2 19:49
问题大了去了
还没有学到指针吧。
没学到指针,何不就直接到主函数赋值。

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

风过无痕丶 发表于 2018-4-2 20:34:28

把代码贴出来~包括你的结构体定义~

粤南靓仔 发表于 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;
}
这是打出来的代码(如果图片不能正常显示的话){:10_254:}
编译器提示warning C4700: local variable 'b1' used without having been initialized(意思应该是b1未被初始化定义吧{:10_266:} ).

ba21 发表于 2018-4-2 20:50:06

粤南靓仔 发表于 2018-4-2 20:24
Emmmm,指针学过了,你说的我能理解,另外我参考了一下甲鱼老师的课件(无视乱码) ...

不用改,编译器只是警告你没有初始化。
实在看不下去,你可以:
#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\n", b1.price);
}

int main(void)
{
        struct Book b1;

        b1.price = 0;

        b1 = Input(b1);

        Output(b1);

        return 0;
}

粤南靓仔 发表于 2018-4-2 21:02:11

ba21 发表于 2018-4-2 20:50
不用改,编译器只是警告你没有初始化。
实在看不下去,你可以:

这么一改的确没问题了,但我还是很好奇为什么编译器说我未初始化,难道要给b1赋初值吗{:10_266:}
另外我将甲鱼老师的代码复制到了VC++6.0下面发现也是类似的报错{:10_250:}
甲鱼老师好像是在Linux下编程的,我觉得可能是编程器不同的锅.{:10_269:}{:10_269:}
页: [1]
查看完整版本: 关于C语言中结构体的小问题