结构体
结构体声明
struct 结构体标签{
成员变量;
} 结构体变量;
结构体定义
#include <stdio.h> #include <string.h> struct user { int count; char name[20]; }leader[3]={0, "Li", 0, "Zhang", 0, "Fun"}; int main(int argc, char *args[]) { int i; for (i = 0; i < 3; i++) { printf("%s\n", leader[i].name); } return 0; }
结构体的成员访问
通过.号进行成员访问,若通过指针指向结构体,访问为(*p).attr;或者是p->attr,同理可得
#include <string.h> #include <malloc.h> struct user { int count; char name[20]; }leader[3]={3, "Li", 8, "Zhang", 9, "Fun"}; int main(int argc, char *args[]) { int i; for (i = 0; i < 3; i++) { printf("%s\n", leader[i].name); } // 指向结构体的指指针 struct user *user1; user1 = (struct user *)malloc(sizeof(struct user)); printf("%d\n", user1->count); strcpy(user1->name, "Haiyu"); printf("%s\n", user1->name); // 指向结构体数组的指针 struct user *p = leader; printf("%d\n", p->count); return 0; }
枚举类型
简单来说,枚举相当于一组简单数值常量的集合。
枚举的定义是:枚举是指将变量的值一一列举出来,变量的值只限于列举出来的范围内。
enum status{ NOT_PAY, HAD_PAY }; printf("%d\n", HAD_PAY);
输入结果为:1
默认枚举类型第一位是0,每次递增1,若中途有重新赋值,如:
enum status{ NOT_PAY, HAD_PAY, UN_START=100, UN_USED, HAD_USED }; printf("%d\n", UN_USED);
输出结果为101,即中间的枚举变量将会按重新赋值后的值递增