0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

结构体与指针的关系

撞上电子 2024-01-11 08:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

C语言中,结构体(Struct)是一种用户自定义的数据类型,它允许您将不同类型的数据项组合在一起,以便形成一个更复杂的数据结构。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型。而结构体指针则是指向结构体类型的指针,用于操作和访问结构体的成员。下面我们将分别详细解释结构体和结构体指针,并提供相应的示例代码。


1.结构体:

结构体是一种自定义数据类型,用于将不同类型的数据组合在一起。 .定义结构体的语法格式:struct 结构体名 { 成员列表 };

#include
// 定义结构体struct Student { char name[50]; int age; float gpa;};
int main() { // 声明结构体变量 struct Student student1;
// 结构体变量赋值 strcpy(student1.name, "John"); student1.age = 20; student1.gpa = 3.7;
// 结构体变量访问 printf("Name: %s\n", student1.name); printf("Age: %d\n", student1.age); printf("GPA: %.2f\n", student1.gpa);
return 0;}

在上述示例中,我们定义了一个名为 Student 的结构体,包含了学生的姓名、年龄和平均成绩。我们声明了一个结构体变量 student1 并对其成员进行赋值。然后,我们通过点运算符 . 访问结构体变量的成员。


2.结构体指针:

结构体指针是指向结构体类型的指针变量,通过该指针可以操作和访问结构体的成员。.定义结构体指针的语法格式:struct 结构体名 *指针变量名;

#include
// 定义结构体struct Point { int x; int y;};
int main() { // 声明结构体指针 struct Point *ptr;
// 动态分配内存 ptr = (struct Point*)malloc(sizeof(struct Point));
// 结构体指针访问(使用箭头运算符 ->) ptr->x = 10; ptr->y = 20;
// 结构体指针打印 printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y);
// 释放内存 free(ptr);
return 0;}

在上述示例中,我们定义了一个名为Point 的结构体,表示一个二维坐标点。我们声明了一个结构体指针 ptr 并使用 malloc() 动态分配了结构体的内存。通过结构体指针 ptr,我们可以使用箭头运算符> 来访问和修改结构体的成员。使用结构体和结构体指针,我们可以更灵活地组织和访问复杂的数据结构。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    181

    文章

    7633

    浏览量

    142753
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    71347
  • 结构体
    +关注

    关注

    1

    文章

    131

    浏览量

    11167
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言结构组及指针问题

    extern xdata struct msg setvalue[5];//设定参数--结构组 extern idata struct msg *CurSetPara;//指向结构
    发表于 04-18 16:49

    新手求教关于STM32中用结构指针的问题!!

    为50MHz GPIO_SetBits(GPIOD,GPIO_Pin_2);//PD.2 输出高 //一下为自己修改的结构指针操作,有问题 /*GPIO_InitTypeDef
    发表于 10-06 16:05

    ucosII系统移植到STM32后的用结构定义指针的问题

    小弟正在学习UCOSII系统,现在正在用STM32平台做实验,现在遇到用结构定义指针的问题,如用结构OS_MEM,其定义入下typede
    发表于 01-18 11:29

    关于操作系统的结构指针使用方式

    结构的变量的指针结构体内部成员的指针关系其实他们两者在内存地址上是有一定的数值
    发表于 10-06 23:44

    结构指针(转载)

    掌握的。记住;遇问题不要逃避,要面对现实、勇于挑战,仔细研究难题的所在,这样相信你会成功的!  指针结构指针关系亦有两重:其一是在定义结构
    发表于 01-22 21:40

    请问结构结构指针做函数形参的作用是什么?

    什么属性的,但是解释的不是很清楚还请大家帮忙解答一下(2)第二个问题是关于结构结构指针做函数参数的疑惑GPIO_T GPIOB这个定义
    发表于 11-01 04:35

    结构指针如何结合

    一直没弄明白结构指针的是使用方法,最近写多级菜单,参考了别人的程序,但是不能理解希望能有大神详细的解释一下!不胜感激。 void (*current_operation_index
    发表于 05-04 05:56

    C语言结构对函数指针封装示例

    C语言结构对函数指针封装示例示例:#include int i, j;struct DATE{ int year; char month; char data; char hour; char
    发表于 07-15 06:18

    消息队列传递结构指针结构异同

    FreeRTOS消息队列 传递结构指针结构异同1 消息队列传递结构
    发表于 02-11 07:02

    C语言入门教程-指向结构指针

    指向结构指针 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构
    发表于 07-29 12:04 3277次阅读

    单片机的结构指针等资料说明

    本文档的主要内容详细介绍的是单片机的结构指针等资料说明包括了:单片机的常量,单片机的变量,构造类型:数组,构造类型:结构,构造类型:
    发表于 12-05 17:23 17次下载
    单片机的<b class='flag-5'>结构</b><b class='flag-5'>体</b>和<b class='flag-5'>指针</b>等资料说明

    FreeRTOS消息队列 传递结构指针结构异同

    FreeRTOS消息队列 传递结构指针结构异同
    发表于 12-08 12:06 6次下载
    FreeRTOS消息队列 传递<b class='flag-5'>结构</b><b class='flag-5'>体</b><b class='flag-5'>指针</b>和<b class='flag-5'>结构</b><b class='flag-5'>体</b>异同

    Keil编译器--结构指针函数;结构作为参数时,不能调用结构指针函数

    Keil编译器很多奇葩的地方,比如很多程序的写法在keil编译器里面实现是实现不了的,并且不报错,而且莫名其妙的死机。结构里面有函数指针时,直接调用是可以的,但是在当结构
    发表于 12-20 19:41 19次下载
    Keil编译器--<b class='flag-5'>结构</b><b class='flag-5'>体</b><b class='flag-5'>指针</b>函数;<b class='flag-5'>结构</b><b class='flag-5'>体</b>作为参数时,不能调用<b class='flag-5'>结构</b><b class='flag-5'>体</b><b class='flag-5'>指针</b>函数

    C语言入门之结构指针

    在C语言中,指向结构对象的指针变量既可以指向结构变量,也可指向结构
    的头像 发表于 03-24 14:59 1466次阅读

    Linux内核如何使用结构和函数指针

    我将结合具体的Linux内核驱动框架代码来展示Linux内核如何使用结构和函数指针
    的头像 发表于 09-06 14:17 1480次阅读
    Linux内核如何使用<b class='flag-5'>结构</b><b class='flag-5'>体</b>和函数<b class='flag-5'>指针</b>?