虽然在这个问题上有很多线索,但我找不到解决我问题的问题,如果我很厚,就道歉。一个重要的区别是我的解决方案不能使用指针。我已经开始了关于结构和我正在处理的问题的章节,这个函数需要一个带有两个参数t1和t2的函数,这两个参数在结构框架中是两个不同的时间。我已经尽可能地减少了代码,并且发现我的struct items的值没有通过函数。
#include<stdio.h>
struct time
{
int hour;
int minute;
int second;
};
struct time t1 = {3, 45, 15};
struct time t2 = {9, 44, 03};
int main (void)
{
struct time elapsedTime(struct time t1,struct time t2);
return 0;
}
struct time elapsedTime(struct time t1,struct time t2)
{
printf ("%i:%i:%i\n", t1.hour, t1.minute, t1.second);
printf ("%i:%i:%i\n", t2.hour, t2.minute, t2.second);
return;
}
答案 0 :(得分:2)
你从未调用过你的函数
elapsedTime( t1, t2 );
答案 1 :(得分:2)
你在main中声明了这个函数,但没有调用它。
而不是:
int main (void)
{
struct time elapsedTime(struct time t1,struct time t2);
return 0;
}
你需要:
struct time elapsedTime(struct time t1,struct time t2);
int main (void)
{
struct time mt = elapsedTime(t1, t2);
// Do something with mt...
return 0;
}
一种更常见的方式来回归&#34;笨重的&#34;数据项将作为指针:
typedef struct my_time {
int hour;
int minute;
int second;
} my_time_t;
void elapsedTime(my_time_t t1, my_time_t t2, my_time_t *t3)
{
t3->hour = ...;
t3->minute = ...;
t3->second = ...;
...
}
注意:我强烈建议为time
避免使用通用名称,例如struct
,因为它可能与某些系统定义的值(现在或以后)发生冲突。避免命名自己的变量名称,如time
,file
,string
等...
答案 2 :(得分:0)
我找到了一个解决方案:
#include<stdio.h>
struct time
{
int hour;
int minute;
int second;
};
void elapsedTime(struct time t1, struct time t2)
{
printf("%i:%i:%i\n", t1.hour, t1.minute, t1.second);
printf("%i:%i:%i\n", t2.hour, t2.minute, t2.second);
}
int main()
{
struct time t1 = { 3, 45, 15 };
struct time t2 = { 9, 44, 03 };
elapsedTime(t1, t2);
return 0;
}
为我编译预期的结果。
正如其他人所说,你只需要用elapsedTime(t1, t2);
调用该函数。
编辑:
要使用指针获得您在下面的评论中所说的内容,您可以使用以下概念:
struct time
{
int hour;
int minute;
int second;
};
void elapsedTime(struct time t1, struct time t2, struct time *t3)
{
printf("%i:%i:%i\n", t1.hour, t1.minute, t1.second);
printf("%i:%i:%i\n", t2.hour, t2.minute, t2.second);
t3->hour = 100;
t3->minute = 50;
t3->second = 25;
}
int main()
{
struct time t1 = { 3, 45, 15 };
struct time t2 = { 9, 44, 03 };
struct time t3 = { 0, 0, 0 };
elapsedTime(t1, t2, &t3);
printf("%i:%i:%i\n", t3.hour, t3.minute, t3.second);
return 0;
}
如您所见,我将第三个结构传递给函数,并通过函数中的引用更改结构值。 (值在函数之外变化)
然后我在函数外打印结构以检查它是否有效。
希望这可以在您使用指针时提供帮助。
答案 3 :(得分:0)
所描述的行为很可能是通过使用相同名称的参数隐藏全局变量t1和t2引起的。 (代码中还有其他问题,其他人已经介绍过。)
我会更改参数名称,例如:
struct time t1 = {3, 45, 15};
struct time t2 = {9, 44, 03};
struct time elapsedTime(struct time time1,struct time time2)