C语言中,箭头符号 “->” 和点号符号 “.”的区别

C语言中 ->和.的区别
1、->是指针指向其成员的运算符 .是结构体的成员运算符。最大的区别是->前面放的是指针,而.前面跟的是结构体变量
2、比如C++中一个类Class Student;里面有个公有成员变量test
如果你声明这个类的对象Student s;那么你要对test操作要用"." s.test
如果你声明这个类的对象Student *s为指针类型的话,那么你要对test操作要用"->"s->test





箭头符号 “->” 和点号符号 “.” 在C语言中都用于访问结构体或联合体类型的成员,但它们之间有一些重要的区别。

  1. 语法:

    • 点号 “.” 主要用于直接访问结构体或联合体变量的成员。例如,如果有一个结构体变量s,其中包含成员变量x,可以使用 s.x 访问 x。
    • 箭头符号 “->” 主要用于通过指针访问结构体或联合体的成员。例如,如果有一个指向结构体的指针变量p,其中包含成员变量x,可以使用 p->x 访问 x。
  2. 对象类型:

    • 点号 “.” 用于直接访问结构体或联合体变量的成员。
    • 箭头符号 “->” 用于通过指针访问指向结构体或联合体的成员。
  3. 使用场景:

    • 点号 “.” 主要用于直接操作结构体或联合体变量。
    • 箭头符号 “->” 主要用于通过指针操作结构体或联合体。

总之,点号和箭头符号在访问结构体或联合体成员时使用的语法和对象类型有所不同,取决于你是直接操作变量还是通过指针访问。



以下是两个例子来对比点号 “.” 和箭头符号 “->” 的不同之处

例子1:使用点号 “.”

#include <stdio.h>

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

int main() {
   struct Person p1;

   strcpy(p1.name, "John");
   p1.age = 25;

   printf("Name: %s\n", p1.name);
   printf("Age: %d\n", p1.age);

   return 0;
}

输出:

Name: John
Age: 25

在这个例子中,我们声明了一个结构体类型 Person,并使用点号 “.” 直接访问结构体变量 p1 的成员。通过赋值和打印语句,我们直接操作 p1 的成员变量 name 和 age。

例子2:使用箭头符号 “->”

#include <stdio.h>
#include <stdlib.h>

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

int main() {
   struct Person *p2;

   p2 = (struct Person*) malloc(sizeof(struct Person));

   strcpy(p2->name, "Emily");
   p2->age = 32;

   printf("Name: %s\n", p2->name);
   printf("Age: %d\n", p2->age);

   free(p2);

   return 0;
}

输出:

Name: Emily
Age: 32

在这个例子中,我们声明了一个指向结构体的指针变量 p2,并使用箭头符号 “->” 通过指针访问结构体的成员。通过动态内存分配(malloc)来分配结构体内存,并操作 p2 指向的结构体的成员变量 name 和 age。

通过这两个例子,你可以看到点号 “.” 和箭头符号 “->” 在语法和使用方式上的不同。点号用于直接操作结构体变量的成员,而箭头符号用于通过指针访问结构体的成员。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值