首页 > 其他分享 >C语言“->“和“p->next“的理解

C语言“->“和“p->next“的理解

时间:2024-02-03 14:33:44浏览次数:27  
标签:name 指向 C语言 理解 结构 next id struct

这是对"->"的理解

在c语言中,"->"是结构体指针的运算符.它允许你通过指向结构体的指针来访问结构体中的成员.

例如,以下定义了一个student类的结构体,其中包含两个字符串类型的成员:"name","id",以及一个整形成员"age",可以使用如下方式访问结构体成员:

 
struct student
{
    char name[10];
    char id[10];
    int age;
};//定义了一个结构体
struct student s;
// C 库函数 例如:char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest.
strcpy(s.name,"John"); //赋值操作
strcpy(s.id,"12345");
s.age = 20;

但是如果你有一个指向结构体"student"的指针"p",你可以使用"->"运算符来访问结构体成员,如下

 
//定义一个结构体指针"p"
struct student *p;
//将"p"指向结构体s的地址
p = &s;
//使用"p->name"访问结构体"s"中的"name"成员
strcpy(p->name, "Jane");
//使用"p->id"访问结构体"s"中的"id"成员
strcpy(p->id, "54321");
//使用"p->age"访问结构体"s"中的"age"成员
p-age = 25;

接下来是对p->next的理解
"p"是指向结构体的指针,并且这个结构体中有个名为"next"的指针成员时,"p = p ->next"意味着将"p"指向下一个结构体的地址.

这种情况通常用于遍历链表.例如,假设你有一个链表,其中每个节点都是结构体"node",其中包含一个整形成员"data"和一个指向结构体"node"的指针成员"next".你可以使用如下的代码来遍历这个链表:

 
struct node {
    int data;
    struct node *next;
};
struct node n1,n2,n3;
//定义三个结构体变量,"n1","n2","n3",把他们链接成为一个链表
n1.data = 1;
n1.next = &n2;
// "n1.next"指向"n3"
n2.data = 2;
n2.next = &n3;
// "n2.next"指向"n2"
n3.data = 3;
n3.next = NULL;
// "n3.next"指向"NULL",表示链表的结尾
struct node *p;
p = &n1;
//定义一个指向结构体"node"的指针"p",并将它指向链表的第一个节点"n1"
while (p != NULL) {
    printf("%d\n",p->data);
    p = p->next;
}
//使用while循环遍历整个链表
//输出结果是:
//1
//2
//3

 

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_63797077/article/details/128401049

 

此外以下内容为我个人观点

有一结构体数组

struct student
{    
    int id;
    char name[20];
    float score;
);
struct student stu[4],*p;

p=&stu[temp] //temp已定义 这里就不放了  直接说

printf("%d,%s,%4.1f",p->id,p->name,p->score);
其中p=&stu[temp] 比如temp是2 那么指向了结构体数组的元素第二个 也就是stu[2]
p->id,p->name,p->score呢 也是访问数组stu[2]的成员!

标签:name,指向,C语言,理解,结构,next,id,struct
From: https://www.cnblogs.com/hack747/p/18004760

相关文章

  • 【随笔】我终于理解了退流!!!!!!!!
    我知道我看起来像个若至但这对我来说是历史性的一刻在我看来退流是NOI级基础算法图论中最难理解的,但是我看过的所有讲解都是一笔带过我不能理解虽然你晨星灵也只提了几句,但是我总算是彻底理解退流的原理和合理性了对于强迫症的我,不完全理解就去敲代码是不可接受的晨星灵我......
  • 数据库初步理解
    数据库的字段属性Unsinged: 无符号的整数不能声明为负数zerofill: 0填充的不足的位数,使用0来填充int(3),5----005自增:通常理解为自增,自动在上一条记录的基础上加+1(默认)通常用来设计唯一的主键~~~index,必须是整数类型可以自定义设计主键自增的......
  • 链表中,LNode和* LinkList的理解
    typedefstructLNode{ intdata; structLNode*next;}LNode,*LinkList;这是标准链表创建法。简单的说,其中LNode和*LinkList分别是LNode的不同名字,显而易见一个是指针一个不是指针。两者等价关系如下:typedefstructLNodeLNode;//将结构体重命名为LNodetypedefs......
  • 从TF-IDF 到BM25, BM25+,一文彻底理解文本相关度
    相关性描述的是⼀个⽂档和查询语句匹配的程度。我们从搜索引擎召回时,肯定希望召回相关性高的数据,那么如何来量化相关度呢。首先,我们定义,一个文档doc,由多个词语term组成。最早,通过最简单的TF-IDF来衡量。TF-IDF朴素的思想,相关度应该是词语权重、文档权重的融合。词频TF(Ter......
  • 桌面应用开发GTK Glade (C语言)
    目录Github教程简介可视化设计生成XML描述文件与多种编程语言兼容与IDE集成安装Glade示例demo.gladedemo.cGithubhttps://github.com/GNOME/gtkhttps://github.com/GNOME/gladegitclonehttps://github.com/GNOME/glade.git教程https://developer.gnome.org/简介G......
  • 【鸿蒙千帆起】高德地图携手HarmonyOS NEXT,开启智能出行新篇章
    2024年1月18日下午,华为举办了鸿蒙生态千帆启航仪式,对外宣布HarmonyOSNEXT星河预览版现已开放申请,同时,首批200+鸿蒙原生应用加速开发,鸿蒙生态设备数量更是突破了8亿大关。这些进展反映了开发者和合作伙伴对鸿蒙生态未来发展的坚定信心和美好期待。1月19日HarmonyOS应用开发技术分......
  • Spring Cloud Config核心功能和原理解析
    配置管理的前世今生随着技术的发展,配置项管理变得越来越简单,尽管如今它只限于管理业务属性或者配置初始化参数等等,但是当年它可肩负着SpringIOC的光荣使命,风光无限。想当年刚入行的时候还是SSH(Struts+Spring+Hibernate)的天下,那时远没有如今这些丰富的开源组件,一个标准的......
  • 深入理解 Java 变量类型、声明及应用
    Java变量变量是用于存储数据值的容器。在Java中,有不同类型的变量,例如:String-存储文本,例如"你好"。字符串值用双引号引起来。int-存储整数(全数字),没有小数,例如123或-123。float-存储浮点数,带有小数,例如19.99或-19.99。char-存储单个字符,例如'a'或'B'。字......
  • 深入理解 Java 变量类型、声明及应用
    Java变量变量是用于存储数据值的容器。在Java中,有不同类型的变量,例如:String-存储文本,例如"你好"。字符串值用双引号引起来。int-存储整数(全数字),没有小数,例如123或-123。float-存储浮点数,带有小数,例如19.99或-19.99。char-存储单个字符,例如'a'或'B'。字......
  • c语言考研自命题热点
    一段C语言代码是怎么执行的C语言代码的执行可以分为几个主要步骤,包括编译、链接和运行。以下是一段简单的C语言代码的执行过程:编写代码:首先,程序员编写C语言代码,包括变量声明、函数定义、控制结构等。编写的代码被保存在源文件中,通常使用.c扩展名。预处理(Preprocessing):在编译之......