当前位置: 首页 > news >正文

C语言结构体(一篇学会)

C语言结构体

在C语言中,结构体是一种自定义的数据类型,它允许用户将不同类型的数据组合在一起。结构体由多个变量组成,这些变量称为结构体的成员。结构体成员可以是不同的数据类型,如整数、浮点数、字符或其他结构体等。

结构体的定义格式如下:

struct [structure tag] {member definition;member definition;...member definition;
} [one or more structure variables];

其中,structure tag是结构体类型的名称,member definition定义了结构体的成员,structure variables是一个或多个结构体变量的名称。

例如,下面是一个结构体的定义:

struct person {char name[50];int age;float salary;
};

这个结构体包含三个成员:nameagesalary,分别是字符数组、整数和浮点数类型。

我们可以使用以下语法创建结构体变量:

struct person p1, p2;

这将创建两个名为p1p2person类型的结构体变量。

我们可以使用以下语法访问结构体变量的成员:

p1.name;
p1.age;
p1.salary;

这将分别返回p1结构体变量的nameagesalary成员的值。

结构体在C语言中非常有用,它允许用户创建自定义数据类型,更好地组织和管理数据。

我们可以使用以下语法创建结构体变量,并对其进行初始化:

struct person p1 = {"John Doe", 30, 5000.0};
struct person p2 = {"Jane Smith", 25, 6000.0};

这将分别创建两个名为p1p2person类型的结构体变量,并将它们的成员初始化为指定的值。

访问结构体变量,并赋值

下面是一个例子,我们创建了一个person类型的结构体变量p1,并给它的成员赋值,然后通过访问结构体变量成员的方式获取其值:

#include <stdio.h>
#include <string.h>struct person {char name[50];int age;float salary;
};int main() {struct person p1;strcpy(p1.name, "John Doe");p1.age = 30;p1.salary = 5000.0;printf("Name: %s\\n", p1.name);printf("Age: %d\\n", p1.age);printf("Salary: %f\\n", p1.salary);return 0;
}

输出结果为:

Name: John Doe
Age: 30
Salary: 5000.000000

在上面的例子中,我们首先定义了一个person类型的结构体变量p1,然后分别给它的成员nameagesalary赋值。最后,我们使用printf()函数输出结构体变量成员的值。

结构体作为函数参数

结构体可以作为函数参数,以便在函数中操作和修改结构体的值。以下是一个简单的例子,其中定义了一个printPerson()函数,该函数接受一个person类型的结构体变量作为参数,并打印该变量的成员值:

#include <stdio.h>
#include <string.h>struct person {char name[50];int age;float salary;
};void printPerson(struct person p) {printf("Name: %s\\n", p.name);printf("Age: %d\\n", p.age);printf("Salary: %f\\n", p.salary);
}int main() {struct person p1;strcpy(p1.name, "John Doe");p1.age = 30;p1.salary = 5000.0;printPerson(p1);return 0;
}

输出结果为:

Name: John Doe
Age: 30
Salary: 5000.000000

在上面的例子中,我们定义了一个printPerson()函数,该函数接受一个person类型的结构体变量作为参数,并使用printf()函数打印该变量的成员值。在main()函数中,我们首先定义了一个person类型的结构体变量p1,然后给它的成员nameagesalary赋值。最后,我们调用printPerson()函数并将p1作为参数传递给它,该函数打印p1的成员值。

指向结构体的指针

我们可以使用指向结构体的指针来访问结构体变量的成员。以下是一个例子,我们定义了一个指向person类型结构体的指针,然后使用指针访问结构体变量成员的方式获取其值:

#include <stdio.h>
#include <string.h>struct person {char name[50];int age;float salary;
};int main() {struct person p1;struct person *ptr;ptr = &p1;strcpy(p1.name, "John Doe");p1.age = 30;p1.salary = 5000.0;printf("Name: %s\\n", ptr->name);printf("Age: %d\\n", ptr->age);printf("Salary: %f\\n", ptr->salary);return 0;
}

输出结果为:

Name: John Doe
Age: 30
Salary: 5000.000000

在上面的例子中,我们首先定义了一个person类型的结构体变量p1和一个指向person类型结构体的指针ptr。然后,我们使用&运算符将p1的地址赋给ptr。我们可以使用ptr->nameptr->ageptr->salary的方式访问p1结构体变量的成员,它们的效果与(*ptr).name(*ptr).age(*ptr).salary相同。最后,我们使用printf()函数输出结构体变量成员的值。

http://www.lryc.cn/news/40329.html

相关文章:

  • 嵌入式软件开发之Linux下C编程
  • 普通Java工程师 VS 优秀架构师
  • Java:SpringBoot实现ApplicationEvent事件的监听和发布
  • 星戈瑞-Sulfo-Cyanine3 azide?磺酸基-Cy3-N3叠氮基水溶性染料
  • 十大经典排序算法(下)
  • 网络协议分析期末复习(四)
  • Matlab对图像和视频的简单处理(图像视频文件读取和输出,转灰度图,取指定帧的图像)
  • ArrayList源码分析
  • SpringBoot IOC、DI、@Autowired、@Resource、作用域
  • 链表相关oj题
  • 【Linux】操作系统(Operator System)
  • 机器学习自学笔记——感知机
  • C++ Primer第五版_第三章习题答案(21~30)
  • colmap+openmvs进行三维重建流程全记录
  • yolov8命令行运行参数详解
  • 分布式锁简介
  • 【嵌入式Linux学习笔记】Linux驱动开发
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)(H题)(线段树)
  • Linux内核Thermal框架详解十三、Thermal Governor(3)
  • TikTok品牌出海创世纪(二)
  • iOS中SDK开发 -- cocoapods库创建
  • 2023年了,还是没学会内卷....
  • chatGPT爆火,什么时候中国能有自己的“ChatGPT“
  • 【Matlab算法】粒子群算法求解一维非线性函数问题(附MATLAB代码)
  • 2023 最新发布超全的 Java 面试八股文,整整 1000道面试题,太全了
  • 产品经理面经|当面试官问你还有什么问题?
  • 单链表的基本操作
  • 【微信小程序-原生开发】系列教程目录(已完结)
  • JavaEE--Thread 类的基本用法(不看你会后悔的嘿嘿)
  • MySQL数据库基本使用(二)-------数据库及表的增删改查及字符集修改