C/C++语言中点运算符(.)和箭头运算符(->)的区别(代码展示)

      之前有学过C#或VB语言的小伙伴对点运算符(.)应该不陌生,即当我们定义了一个结构体时,想要访问结构体里面的成员,我们只要在结构体名称后面加上一个点运算符(.),系统则自动将结构体里面的内容罗列出来,供我们选择引用了。那箭头运算符时干什么用的呢?下面我们通过C++代码展示来比较一下两者的区别。

①、点运算符

创建一个student结构体,如果我们想要对结构体里面成员的属性值进行更改,可以采用点运算符进行直接赋值。

#include <stdio.h>                 /*引用头文件:输入输出*/
#include<windows.h>                /*引用系统头文件:显示屏暂停*/
typedef struct student             /*定义一个student类型的结构*/
{ 
	char key;                  /*结构体内容*/
	char name[20];
	int age;
}student;

 int main()
{
	student data;             /*定义结构体变量data*/
	data.age = 18;            /*向结构体变量赋值*/
	printf("%d\n", data.age); /*打印结构体变量age内容*/
	system("pause");          /*显示屏暂停*/
}

运行效果:

②、箭头运算符

这个运算符我们比较陌生,看到这个我们不禁会问,什么是箭头运算符呢,它的作用是什么?

C语言中的箭头符号为->,这个操作符并非是一个符号,而是由减号(-)和大于号(>)共同组成的。

作用:取结构体指针变量指向的元素值。

这个听起来可能有些抽象,看图:

当我们打出箭头运算符时,系统会自动罗列出该指针所指向结构体内的成员。

为了比较两者的区别我们再看一下点运算符的效果:

这样小伙伴们是不是就很清晰两者的区别了呢^_^

点运算符(.)用于结构体变量访问成员。

箭头运算符(->)用于结构体指针变量访问成员。

通过指针读取结构体内容代码:

#include <stdio.h>                           /*引用头文件:输入输出*/
#include<windows.h>                          /*引用系统头文件:显示屏暂停*/
typedef struct student                       /*定义一个student类型的结构*/
{              
	char name[20];                       /*结构体内容*/
	int age;
}student;

 int main()
{
	student data;                        /*定义结构体变量data*/
	struct student *p;                   /*定义结构体指针变量pdata*/
	struct student stu1 = { "Elsa",18 }; /*建立一个结构体stu1并写入成员*/
	p = &stu1;                           /*给指针p赋值,将stu1取址,赋值给指针p*/
	printf("%d\n", p->age);              /*打印结构体变量age内容*/
	system("pause");                     /*显示屏暂停*/
}


代码显示结果:

通过指针改变结构体成员内容代码:

#include <stdio.h>                          /*引用头文件:输入输出*/
#include<windows.h>                         /*引用系统头文件:显示屏暂停*/
typedef struct student                      /*定义一个student类型的结构*/
{              
	char name[20];                      /*结构体内容*/
	int age;
}student;

 int main()
{
	student data;                        /*定义结构体变量data*/
	struct student *p;                   /*定义结构体指针变量pdata*/
	struct student stu1 = { "Elsa",18 }; /*建立一个结构体stu1并写入成员*/
	p = &stu1;                           /*给指针p赋值,将stu1取址,赋值给指针p*/
	p->age = 20;                         /*通过指针对结构体中的age元素进行更改*/
	printf("%d\n", p->age);              /*打印结构体变量age内容*/
	system("pause");                     /*显示屏暂停*/
}


代码显示结果:

拓展:

VS如何创建C++项目

https://jingyan.baidu.com/article/f54ae2fc4732071e92b849d6.html

解决C++显示内容闪退问题

https://jingyan.baidu.com/article/a681b0de3732773b18434630.html

  • 59
    点赞
  • 192
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值