个人名片:
🐼作者简介:一名大一在校生 🐻❄️个人主页:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:零基础学java ----- 重识c语言 🐓每日一句:半山腰总是最挤的,你得去山顶看看。
- 🎉结构体🎉
- 🎉定义结构🎉
- 🎉结构体变量的初始化🎉
- 🎉访问结构成员🎉
- 🎉指向结构的指针🎉
- 🐯想要快速刷题,了解更多欢迎访问 : [牛客网](https://www.nowcoder.com/link/pc_csdncpt_xxaxx_c)
前言:
最近有许多小伙伴问小新有没有好用的刷题网站,想提升一下自我能力 经过小新缜密的思考与亲身体验,推荐超实用的🎉点击直接访问牛客网🎉 里面用丰富的大厂面试真题、各类算法由易到难层层递进、专项题库应有尽有,还不快来体验体验🎏🎏🎏
🎉结构体🎉C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
🎉定义结构🎉为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct tag {
member-list
member-list
member-list
...
} variable-list ;
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。
例学生类:
#define _CRT_SECURE_NO_WARNINGS 1
# include
//描述一个学生类数据
//姓名
//年龄
//电话
//性别
//struct 结构体关键字 stu - 结构体标签 struct Stu- -结构体类型
//struct studnet
//{
// char name[20];
// short age;
// char tele[12];
// char sex[5];
//
//}s1,s2,s3;//三个是三个全局变量
typedef struct Stu //类型重定义
{
char name[20];
short age;
char tele[12];
char sex[5];
}Stu;
int main()
{
struct Stu s1;
Stu s2;
return 0;
}
🎉结构体变量的初始化🎉
和其它类型变量一样,对结构体变量可以在定义时指定初始值。 举例:
#include
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book = { "C 语言", "RUNOOB", "编程语言", 123456 };
int main()
{
printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);
}
控制台输出:
为了访问结构的成员,我们使用成员访问运算符(.)。 成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用 struct 关键字来定义结构类型的变量。
下面的实例演示了结构的用法:
#include
typedef struct Stu
{
char name[20];
short age;
char id[12];
}Stu;
int main()
{
Stu s1 = { "张三",20,"15999998888"};//局部变量
Stu s2 = { "李四",35,"15588887777"};
printf("年龄: %s\n", s1.name);
printf("年龄 :%d\n", s1.age);
printf("学号 :%d\n", s1.id);
printf("姓名 : %s\n", s2.name);
printf("年龄 :%d\n", s2.age);
printf("学号 :%d\n", s2.id);
return 0;
}
您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
-
struct Books *struct_pointer;
现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:
-
struct_pointer = &Book1;
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
-
struct_pointer->title;
#include
#include
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
/* 函数声明 */
void printBook( struct Books *book );
int main( )
{
struct Books Book1; /* 声明 Book1,类型为 Books */
struct Books Book2; /* 声明 Book2,类型为 Books */
/* Book1 详述 */
strcpy( Book1.title, "C Programming");
strcpy( Book1.author, "Nuha Ali");
strcpy( Book1.subject, "C Programming Tutorial");
Book1.book_id = 6495407;
/* Book2 详述 */
strcpy( Book2.title, "Telecom Billing");
strcpy( Book2.author, "Zara Ali");
strcpy( Book2.subject, "Telecom Billing Tutorial");
Book2.book_id = 6495700;
/* 通过传 Book1 的地址来输出 Book1 信息 */
printBook( &Book1 );
/* 通过传 Book2 的地址来输出 Book2 信息 */
printBook( &Book2 );
return 0;
}
void printBook( 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);
}
控制台输出:
Book title : C Programming Book author : Nuha Ali Book subject : C Programming Tutorial Book book_id : 6495407 Book title : Telecom Billing Book author : Zara Ali Book subject : Telecom Billing Tutorial Book book_id : 6495700
🐯想要快速刷题,了解更多欢迎访问 : 牛客网