当前位置:首页 > C++目录 > 正文内容

C++中箭头指针的含义及用法

亿万年的星光4年前 (2021-12-04)C++目录9332

0.前言

c++中我们在一些程序中看到箭头 p—>stu 类似于这样的表示。今天就简单来解释一下点运算和箭头运算。


1.点运算

常见的点一般出现在结构体中,比如下面的代码:

#include<iostream>
using namespace std;
struct student{
	int name[100];
	int num;
	double chinese;
};
student s [10]; 
 
int main(){
	for(int i=0;i<5;i++){
		cin>>s.name;
	}
	return 0;
}

我们可以通过点运算符快速访问结构体成员变量。

比如下面这样:

#include<iostream>
using namespace std;
struct student{
	int name[100];
	int num;
	double chinese;
};
student s1; 
 
int main(){
	s1.num=12;
	cout<<s1.num;
	return 0;
}



2.指针运算


指针运算用于结构体指针访问成员。

例子:

#include<iostream>
using namespace std;
struct student{
	int name[100];
	int num;
	double chinese;
};
student s1; 
student *s2; 
int main(){
	s1.num=12;
	cout<<"s1="<<s1.num<<endl;
	s2=&s1;
	s2->num=17;
	cout<<"s1="<<s1.num<<endl;
	cout<<"s2="<<s2->num<<endl;
	return 0;
}
 /**
 结果:
s1=12
s1=17
s2=17
 
 */

而且也可以通过箭头函数快速访问结构体变量


3.简单总结

点运算是结构体变量访问其成员的操作符

箭头运算是结构体指针访问其指向的成员变量的操作符

(*s2).num 和s2->num是等价的

#include<iostream>
using namespace std;
struct student{
	int name[100];
	int num;
	double chinese;
};
student s1; 
student *s2; 
int main(){
	s1.num=12;
	cout<<"s1="<<s1.num<<endl;
	s2=&s1;
	(*s2).num=17;
	cout<<"s1="<<s1.num<<endl;
	cout<<"s2="<<(*s2).num<<endl;
	return 0;
}
 /**
 结果:
s1=12
s1=17
s2=17
 
 */


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

c++ 如何用链表存取数据

c++ 如何用链表存取数据

由于单链表的每个结点都有一个数据域和一个指针域。所以,每个结点可以定义成一个记录。其中,DATA数据元素,可以为你想要储存的任何数据格式,可以是数组,可以是int,甚至可以是结构体(这就是传说中的结构...

C++中的逻辑与运算

样例#include<iostream> using namespace std; int main(){ cout<<(1&1)...

CSP-J2021年普及组复赛T3——网络连接

【题目描述】TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Clie...

C++小项目——实时钟表

C++小项目——实时钟表

0.前言在很多游戏中,我们要使用时间,这个时间一个是系统当前的时间,一个是服务器给你的时间。这篇文章我们尝试做一个模拟时钟。效果图如下1.任务分解1.首先我们尝试使用easyx来画一个。基本框架如下:...

信息学奥赛中文件流的写法

信息学奥赛中文件流的写法

头文件#include<cstdio>也可以用万能头格式如下:int main(){ freopen("xxxx.in","r",st...

图的访问与遍历-广度优先搜索

对于无向图的广度优先搜索#include <iostream> #include <vector> #include <queue>...