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语言
    +关注

    关注

    180

    文章

    7534

    浏览量

    128836
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70364
  • 结构体
    +关注

    关注

    1

    文章

    125

    浏览量

    10750
收藏 人收藏

    评论

    相关推荐

    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

    一个指针结构的问题导致芯片不能运行

    简化描述: 我在程序中定义了如下类型的一个结构: typedef struct {       uint8_t*   Rxbuffer;       uint8_t     Timer
    发表于 08-19 07:14

    请问结构指针变量 *a这个a和&a有啥区别?

    比如结构变量a,那么&a是代表a中第一个成员的地址吗,变量名字a也可以代表地址吗还有一个问题,结构指针变量 *a 这个a和&a是啥区别
    发表于 04-04 03:37

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

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

    C语言结构的区别

    结构在使用其某成员变量时用:结构名.结构成员方式忽然想到GPIOA->ODR这个
    发表于 03-24 03:27

    结构指针如何结合

    一直没弄明白结构指针的是使用方法,最近写多级菜单,参考了别人的程序,但是不能理解希望能有大神详细的解释一下!不胜感激。 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

    使用结构的主要作用

    结构作用(STM32)来源:正点原子MDK 中很多地方使用结构以及结构
    发表于 08-24 07:54

    结构变量的定义与使用变量访问结构成员

    知识点回顾关于找最大公共子串的两种解题方法结构的定义(3种)结构变量的定义与使用变量访问结构
    发表于 12-17 07:10

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

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

    怎么去解决结构指针宏定义错误的问题呢

    error:expected identifier before ‘(’ token,结构指针宏定义错误编译时弹出标题所示错误,一般为宏定义里有与其他地方重复的常量符号。找出名字重复的符号并修改
    发表于 02-28 07:22