指针的点运算和箭头运算(->)
(其实点运算是结构体变量访问其成员的操作符
箭头运算是结构体指针访问其指向的成员变量的操作符
)
突然发现指针的两个运算符我是不太清楚的,就翻书搞了下:其实点运算和箭头运算都可以当作访问指针所指向的 结构体或者类对象的成员是用的操作符。比如:
struct song
{
int a;
}
有这样一个结构体,定义:
song s;
s.a=1;
song *p;
p=&s;
那么要访问指针p所指向的内存:
(*)p.a 和 p->a 是等价的
PS:
1.点运算比*运算优先级高,故如果用 . 运算,括号不可省。因为(*)p是指针怕指向的结构体变量,故可以用点运算来访问其成员
2.而箭头运算只能指针用,比如 声名 int *p
p是指针,*p就是p所指向的一个int 变量的内存
C++点和箭头操作符用法区别
变量是对象的时候用“.”访问
变量是对象指针的时候用“->”访问
例:
#inlclude <iostream>
using namespace std;
class A
{
public:
int x;
int y;
};
int main()
{
A a;
a.x=100; //对象用点访问
// a->y=100; //error
A* pa = new A;
pa->y=200; //对象指针用箭头
// pa.x=100; //error<br> delete pa;
return 0;
}