newbie print struct C编程问题

时间:2011-09-19 12:13:40

标签: c

我是C编程的新手,并试图在下面创建简单的代码,用于使用其他函数打印struct成员。

我不明白这一点,因为在函数funct_to_print_value中,我已经声明了结构变量“car”,我相信我需要的只是打印使用(点)符号来访问它。显然不是,因为我得到了上面的错误。有没有人可以分享他们的知识,如何打印买家的价值,以及我上面做了什么错误?

谢谢..

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>


typedef struct slot_car {
    int buyer;
} slot_car;



int main() {



    slot_car car;
    memset(&car, 0, sizeof(car));
    car.buyer = 1;

    printf("value of car is .. %d\n", car.buyer);

    funct_to_print_value();
    printf("end of function..\n");
    return 0;
}

int funct_to_print_value()
{
    printf("you are in printlist function..\n");
    slot_car car;
    printf("value of car inside is %d\n", car.buyer);

    return 1;
}

2 个答案:

答案 0 :(得分:1)

由于您在每个函数中分别声明了car,它们是独立的(本地)变量。您可能希望将其作为参数从main传递给funct_to_print_value。警告很奇怪,但编译器可能检测到未启动的值并提供此消息,因为它首先在printf中使用。

答案 1 :(得分:0)

这对我来说很好看。获得更多信息会很有帮助。我所做的只是将您的示例解压缩到temp.c文件中并使用gcc -c temp.c进行编译。没有错误。

这是哪个操作系统?

这是哪个构建环境/编译器?

你是如何建造这个的? (构建环境中使用的命令)

我在Ubuntu Linux 10.04上使用gcc 4.4.3。

编辑1:

如果将car.buyer转换为int会发生什么?

  

printf(“汽车的价值为..%d \ n”,(int)car.buyer);

编辑2:

如何打印1?

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>


typedef struct slot_car {
    int buyer;
} slot_car;



int main() {



    slot_car car;
    memset(&car, 0, sizeof(car));
    car.buyer = 1;

    printf("value of car is .. %d\n", car.buyer);

    {
       int temp_ret;
       temp_ret = funct_to_print_value();
       printf("end of function..%d\n",temp_ret);
    }
    return 0;
}

int funct_to_print_value()
{
    printf("you are in printlist function..\n");
    slot_car car;
    printf("value of car inside is %d\n", car.buyer);

    return 1;
}

value of car is .. 1
you are in printlist function..
value of car inside is 134514096
end of function..1
cnorton@steamboy:~/scratch$