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

C语言---指针的两个运算符:点和箭头

目录

  • 点(.)运算符
  • 箭头(->)运算符
  • 需要注意
  • 实际例子

  • C语言中的指针是一种特殊的变量,它存储了一个内存地址。
  • 点(.)和箭头(->)是用于访问结构体和联合体成员的运算符。

点(.)运算符

  • 点(.)运算符用于访问结构体或联合体变量的成员。当我们需要直接使用结构体的成员,并且不需要在不同的函数之间传递结构体时,可以选择定义结构体变量。这样可以直接通过结构体变量名和点运算符来访问结构体的成员。
  • 当我们有一个结构体或联合体变量时,可以使用点运算符来访问该变量的成员。例如:
struct Person {
    char name[20];
    int age;
};

struct Person p;
p.age = 25;

箭头(->)运算符

  • 箭头(->)运算符用于访问指向结构体或联合体的指针的成员。当我们需要在不同的函数之间传递结构体,或者需要动态分配内存来存储结构体时,可以选择定义指向结构体的指针。通过指针,我们可以方便地传递结构体的地址,避免了复制结构体的开销,并且可以在需要时动态分配和释放内存。
  • 当我们有一个指向结构体或联合体的指针时,可以使用箭头运算符来访问该指针指向的结构体或联合体的成员。例如:
struct Person {
    char name[20];
    int age;
};

struct Person *ptr;
ptr = &p;
ptr->age = 25;

需要注意

  • 点运算符只能用于结构体或联合体变量,而箭头运算符只能用于指向结构体或联合体的指针
  • 点运算符和箭头运算符都是从左到右结合的。
  • 点运算符和箭头运算符的优先级高于其他大多数运算符。

实际例子

  • 例如,我们可以定义一个结构体表示学生信息,然后使用点和箭头运算符来访问学生的姓名和年龄:
#include <stdio.h>

struct Student {
    char name[20];
    int age;
};

int main() {
    struct Student s;
    struct Student *ptr;

    // 使用点运算符访问结构体变量的成员
    s.age = 18;
    printf("Student's age: %d\n", s.age);

    // 使用箭头运算符访问指针指向的结构体的成员
    ptr = &s;
    ptr->age = 20;
    printf("Student's age: %d\n", ptr->age);

    return 0;
}

输出:

Student's age: 18
Student's age: 20

在这里插入图片描述


http://www.kler.cn/a/274285.html

相关文章:

  • stm32制作CAN适配器5--WinUsb上位机编写
  • JVM对象分配内存如何保证线程安全?
  • 算法设计期末复习
  • 前端和后端解决跨域问题的方法
  • springboot460实习生管理系统设计和实现(论文+源码)_kaic
  • Pytorch | 从零构建ResNet对CIFAR10进行分类
  • Java 多线程(抢CPU)
  • 面试算法-51-翻转二叉树
  • 【C语言进阶篇】自定义类型:结构体(上)
  • 堆排序(数据结构)
  • SpringBoot项目串口通讯之jSerialComm
  • 什么是多模态学习?
  • 代码随想录|Day21|回溯01|77.组合
  • 面试算法-47-有效的括号
  • 基于”Python+”多技术融合在蒸散发与植被总初级生产力估算中的应用教程
  • Unity类银河恶魔城学习记录11-2 p104 Inventoty源代码
  • C++ Qt开发:QUdpSocket网络通信组件
  • Java安全 反序列化(1) URLDNS链原理分析
  • 基于51单片机PT100温度检测LCD1602显示(程序+原理图+PCB+仿真+全套资料)
  • ModbusTCP转Profinet网关高低字节交换切换
  • 接口和抽象类的区别
  • 深入探讨Python中的文件操作与文件IO操作【第141篇—Python实现】
  • 【Swing】Java Swing实现省市区选择编辑器
  • 第四百一十一回
  • Java基础-IO流
  • 详细了解CSS