我是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;
}
答案 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。
如果将car.buyer转换为int会发生什么?
printf(“汽车的价值为..%d \ n”,(int)car.buyer);
如何打印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$