c中的time结构体

struct   tm

{

    int tm_sec;

    int tm_min;

    int tm_hour;

    int tm_mday;

    int tm_mon;

    int tm_year;

    int tm_wday;

    int tm_yday;

    int tm_isdst;

}


int tm_sec   代表目前秒数,正常范围0-59,允许至61秒

int tm_min   代表目前分数,范围0-59

int tm_hour   代表从午夜算起的时数,范围0-23

int tm_mday  代表目前月份的日数,范围01-31

int tm_mon   代表目前月份,从一月算起,范围从0-11

int tm_year   代表从1900年算起至今的年数

int tm_wday  代表一星期的日数,从星期一算起,范围为0-6

int tm_yday    代表从今年1月1日算起至今的天数,范围0-365

int tm_isdst    代表日光节约时间的旗标



time_t为typedef __int64 __time64_t;

typedef long time_t;

struct timeval
{
       uint tv_sec;
       uint tv.usec;
}

### 结构体的概念 在C语言中,结构体(`struct`)是一种用户自定义的数据类型,允许将多个不同类型的数据组合在一起,形成一个逻辑上相关的整体。例如,可以将学生的姓名、学号、年龄等信息组织在一个结构体中[^1]。 ### 结构体的定义 #### 1. 先定义结构体类型,再定义变量 这是最基础的定义方式: ```c struct student { char no[20]; // 学号 char name[20]; // 姓名 char sex[5]; // 性别 int age; // 年龄 }; struct student stu1, stu2; // 定义结构体变量 ``` 这种方式先声明了一个名为 `student` 的结构体类型,然后使用该类型定义了两个变量 `stu1` 和 `stu2` [^3]。 #### 2. 在定义结构体的同时定义变量 也可以在定义结构体类型的同时直接定义变量: ```c struct stu { char *name; // 姓名 int num; // 学号 char sex; // 性别 float score; // 成绩 } stu1, stu2; ``` 这种方式更为紧凑,适用于仅需少量结构体变量的情况 [^4]。 #### 3. 使用结构体嵌套 结构体成员还可以是另一个结构体类型,实现嵌套结构: ```c struct TIME { int date; int month; int year; int hour; int min; int sec; }; struct nmea_msg { struct TIME utc; char gpssta; int longitude; int latitude; short speed; short altitude; }; ``` 此方法可以构建更复杂的数据模型,如GPS数据结构 [^5]。 ### 结构体的使用 #### 初始化结构体变量 可以在定义结构体变量时进行初始化: ```c struct stu { char *name; int num; int age; char group; float score; } stu1 = { "Tom", 12, 18, 'A', 136.5 }; ``` 这种初始化方式使代码更加清晰,并且可以直接为每个字段赋值 [^1]。 #### 访问结构体成员 使用点操作符(`.`)来访问结构体中的成员: ```c printf("Name: %s\n", stu1.name); printf("Score: %.2f\n", stu1.score); ``` #### 使用结构体指针 可以通过指针访问结构体成员,使用箭头操作符(`->`): ```c struct stu *pstu = &stu1; printf("Name via pointer: %s\n", pstu->name); ``` 结构体指针在函数参数传递和动态内存分配中非常有用 [^1]。 #### 结构体作为函数参数 结构体变量可以作为函数参数传递: ```c void printStudent(struct student s) { printf("Name: %s, Age: %d\n", s.name, s.age); } printStudent(stu1); ``` 也可以传递结构体指针以避免复制整个结构体: ```c void updateStudent(struct student *s) { s->age += 1; } updateStudent(&stu1); ``` ### 示例:完整结构体使用示例 ```c #include <stdio.h> // 定义结构体类型 struct student { char no[20]; // 学号 char name[20]; // 姓名 char sex[5]; // 性别 int age; // 年龄 }; int main() { // 定义并初始化结构体变量 struct student stu1 = { "2021001", "Alice", "Female", 20 }; // 使用结构体指针 struct student *pstu = &stu1; // 输出结构体成员 printf("Student Name: %s\n", pstu->name); printf("Student Age: %d\n", pstu->age); // 修改结构体成员 pstu->age = 21; printf("Updated Age: %d\n", pstu->age); return 0; } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值