//***** 结构体 *****
void test1()
{
struct book
{
char name[20];
float price;
};
/*
结构体其实就是自定义的数据类型,C语言虽然有很多数据类型,但开发复杂的应用程序的时候,这些还是不够的,这就需要自定义数据类型
注意的是:共用体的成员不能同时被初始化,因为所有成员公用同一块内存,不能同时操作一块内存
*/
}
//***** 结构体多种定义方式 *****
void test2()
{
// 第一种
struct book1
{
char name[20];
float price;
};
// 第二种
struct book2
{
char name[20];
float price;
};
typedef struct book2 Mybook; // 给struct book2 取个别名 Mybook
}
//***** 结构体变量的初始化 *****
void test3()
{
struct book
{
char name[20];
float price;
};
typedef struct book Mybook;
Mybook book1 = {"呼啸山庄",15.0f};
printf("名称:%s\n",book1.name);
printf("价格:%2.2f\n",book1.price);
}
//***** 结构体变量的赋值 *****
void test4()
{
struct book
{
char name[20];
float price;
};
typedef struct book Mybook;
Mybook book1;
strcpy(book1.name,"呼啸山庄");
book1.price = 18.5f;
printf("名称:%s\n",book1.name);
printf("价格:%2.2f\n",book1.price);
}
//***** 结构体变量数组 *****
void test5()
{
struct book
{
char name[20];
float price;
};
typedef struct book Mybook;
Mybook em[3] = {{"呼啸山庄",15.0f},{"三国演义",18.0f},{"水浒传",20.0f}};
for(int i = 0; i < 3; i ++)
{
printf("名称:%s\t价格:%2.2f\n",em[i].name,em[i].price);
}
}
//***** 结构体变量嵌套 *****
void test6()
{
struct date
{
int year;
int month;
int day;
};
struct employees
{
char name[20];
float pay;
struct date Emdate;
};
struct employees em;
strcpy(em.name,"麦海华");
em.pay = 6000.0f;
em.Emdate.year = 1985;
em.Emdate.month = 5;
em.Emdate.day = 16;
printf("名称:%s\t工资:%4.2f\t生日:%04d-%02d-%02d\n",em.name,em.pay,em.Emdate.year,em.Emdate.month,em.Emdate.day);
}
//***** 结构体变量指针 *****
void test7()
{
struct book
{
char name[20];
float price;
};
struct book Mybook;
struct book *ptr = NULL;
ptr = &Mybook;
strcpy(Mybook.name,"三国演义");
Mybook.price = 15.0f;
printf("名称:%s\t价格:%2.2f\n",ptr->name,ptr->price);
/*
"->" 指针运算符,如果是使用指针,则只能使用指针运算符操作它所指向的变量
"." 点运算符,如果是结构体变量就可以使用,点运算符也称成员运算符
*/
}
//***** 结构体变量数组 *****
void test8()
{
struct book
{
char name[20];
float price;
};
struct book m_book[3] = {{"呼啸山庄",15.0f},{"三国演义",18.5f},{"水浒传",20.0f}};
struct book *ptr = NULL;
ptr = m_book;
for(int i = 0; i < 3; i ++)
{
printf("名称:%s\t价格:%2.2f\n",ptr->name,ptr->price);
ptr ++;
}
/*
结构体指针操作结构体数组
*/
}
//***** 共用体 *****
void test9()
{
union book
{
char name[20];
char title[20];
};
/*
共用体也是自定义的数据类型,但是该类型中的所有成员公用同一块内存,因此,一个成员被赋值,就等于所有成员都被赋了相同的值
*/
}
C语言_结构体和共用体
最新推荐文章于 2023-10-26 15:01:55 发布