c语言结构体

#pragma once
#include <stdio.h>
/*C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的
数据项。
结构体中的数据成员可以是基本数据类型(如 int、float、char 等),也可以是其他结构体类型、指针类型等。

结构体定义由关键字 struct 和结构体名组成,结构体名可以根据需要自行定义。

*/
//
struct Books
{
	char title[50];
	char author[50];
	char subject[100];
	int book_id;
}book = {"c 语言","RUNOOB","编程语言",123456};

struct Person {
	char name[20];
	int age;
	float height;
};
void printBook(struct Books book);
void print_Book(struct Books* book);
void test_point()
{
	//结构体变量的初始化
	printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);

	//访问结构体成员了,使用成员运算符(.)
	struct Books Book1; /* 声明 Book1,类型为 Books */

	struct Books Book2; /* 声明 Book2,类型为 Books */

	//Book1
	strcpy_s(Book1.title, "C Programing");
	strcpy_s(Book1.author, "Nuha Ali");
	strcpy_s(Book1.subject, "C Programing Tutorial");
	Book1.book_id = 6495407;

	strcpy_s(Book2.title, "Telecom Billing");
	strcpy_s(Book2.author, "Zara Ali");
	strcpy_s(Book2.subject, "Telecom Billing Tutorial");
	Book2.book_id = 6495700;

	/* 输出 Book1 信息 */
	printf("Book 1 title : %s\n", Book1.title);
	printf("Book 1 author : %s\n", Book1.author);
	printf("Book 1 subject : %s\n", Book1.subject);
	printf("Book 1 book_id : %d\n", Book1.book_id);

	/* 输出 Book2 信息 */
	printf("Book 2 title : %s\n", Book2.title);
	printf("Book 2 author : %s\n", Book2.author);
	printf("Book 2 subject : %s\n", Book2.subject);
	printf("Book 2 book_id : %d\n", Book2.book_id);


	//将结构体作为函数参数

	printBook(Book1);//结构体对象访问结构的成员
	printBook(Book2);

	//指向结构的指针 指针访问结构的成员
	print_Book(&Book1);
	print_Book(&Book2);

	//计算结构体的大小
	struct Person person;
	//%zu 是一个格式说明符,用于表示无符号整数类型(unsigned int)的大小。在 C 语言中,%zu 通常用于 sizeof() 函数的
	//输出结果,以获取变量所占用的字节数。
	printf("结构体 Person 大小为: %zu 字节\n", sizeof(person));
	printf(" age 大小为: %zu 字节\n", sizeof(person.age));
	printf(" height 大小为: %zu 字节\n", sizeof(person.height));
	printf(" age 大小为: %zu 字节\n", sizeof(person.name));


}
void printBook(struct Books book)
{
	/* 输出 Book1 信息 */
	printf("Book  title : %s\n", book.title);
	printf("Book  author : %s\n", book.author);
	printf("Book  subject : %s\n", book.subject);
	printf("Book  book_id : %d\n", book.book_id);

}
void print_Book(struct Books* book)
{
	printf("Book  title : %s\n", book->title);
	printf("Book  author : %s\n", book->author);
	printf("Book  subject : %s\n", book->subject);
	printf("Book  book_id : %d\n", book->book_id);
}


//运行可直接在main函数包含改文件头文件,调用test_point()即可

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值