gpt4 book ai didi

c - 为什么在 Struct 中使用 -> 运算符在 C 中不起作用

转载 作者:行者123 更新时间:2023-11-30 21:18:19 25 4
gpt4 key购买 nike

我是 C 语言的新手,我已经彻底寻找答案。为什么 -> 运算符不能在我的结构体代码中进行编译。

#include<stdio.h>
#include<time.h>

float t1=0.0f;
float t2=0.0f;
void main()
{
int i;
float a,t1,t2;
struct timespec ts;

clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&ts);
t1 =(float)ts->tv_sec;
printf(" Tiempo 1 %f\n",t1);
a=0;
for (i=0;i<10000000;i++)
{
a+=1;
}

clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&ts);
t2 = (float)ts -> tv_sec;
printf(" Tiempo 2 %f\n",t2);
printf(" Delta %f\n",t2-t1);
printf("%f\n",a);
}

编译错误:

c1.c: In function ‘main’:
c1.c:27:14: error: invalid type argument of ‘->’ (have ‘struct timespec’)
t1 =(float)ts->tv_sec;
^
c1.c:37:15: error: invalid type argument of ‘->’ (have ‘struct timespec’)
t2 = (float)ts->tv_sec;

我已经看到 ts.tv_sec 可以工作,但我不知道为什么 -> 在主函数中不起作用,而当它在不同的函数中时却起作用......我有点困惑。我将衷心感谢您的帮助。谢谢

最佳答案

至少在 C 语言中,ts->tv_sec 可以被认为是 (*ts).tv_sec 的语法糖。

由于 ts 不是指针,因此您的代码无法编译。只需写入 ts.tv_sec 即可。

why -> does not work in main function and it does when it's inside a different funcion

因为其他函数可能通过指针参数访问timespec

关于c - 为什么在 Struct 中使用 -> 运算符在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25708476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com