指针的点运算和箭头运算(->)

指针的点运算和箭头运算(->)

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

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

突然发现指针的两个运算符我是不太清楚的,就翻书搞了下:其实点运算和箭头运算都可以当作访问指针所指向的 结构体或者类对象的成员是用的操作符。比如:

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 变量的内存

另外附一篇blog参考

http://blog.csdn.net/taric_ma/article/details/7397362

时间: 2024-10-13 04:51:20

指针的点运算和箭头运算(->)的相关文章

C++学习笔记(十一):成员访问运算符(点运算和箭头运算)

成员访问运算符 点运算符"."和箭头运算符"->",都可以用于访问成员,其中点运算获取类对象的一个成员,箭头运算获取指针指向对象的成员.表达式ptr->men等价于(*ptr).mem: string s = "hello",  *p = &s; auto n = s.size();                        //获取string对象的成员 n = (*p).size();                

C语言结构体,点运算和箭头运算

C语言有一种数据类型叫结构体,其定义格式为: struct 结构体名 { 结构体成员变量定义; }; 如: struct student { char name[20]; int age ; double score ; }; 用结构体定义的变量叫结构体变量,如:     struct student stu; //定义一个结构体变量stu 这种变量在引用结构体成员时,使用点(.)来操作,如: strcpy( stu.name, "zhangsan" ); stu.age=20; st

C语言指针——指针的运算

说指针之前,先说两个比较不相关的东西,也当做是一种知识的补充.看下面的代码: #include <stdio.h> int main(void) { char *s = "Hello world."; printf(s); } 运行这段代码,会出现错误吗?如果出现错误,是什么错误? 分析:printf一种常规的用法就是printf("Please input a data:");这种用法相信很多人都使用过,但是将这种用法分析一下,这样的用法printf函

指针运算(C++)

//本文是学习<C++程序设计教程--设计思想与实现>的笔记. 指针可以进行加减运算. 数组名本身,没有方括号和下标,实际上是一个地址,表示数组起始地址. 整型数组的数组名本事得到一整数地址,字符数组的数组名得到一字符地址. 可以把数组起始地址赋值给一指针,通过移动指针(加减指针)来对数组元素进行操作. 例如:下面程序用指针运算来计算数组元素的和: #include<iostream.h>int main(){ int iArray[10]; int sum = 0; int *

c++ 重载运算与类型转换

1 基本概念 1.1 基本点 隐式的this指针 运算符函数至少有一个类类型参数 重载运算符的优先级应与内置运算符一致 ::, .*, ., ? : 不可重载 1.2 重载的运算符函数的调用方式 1) 非成员函数的调用   operator+为对象data1, data2的非成员函数 data1 + data2;        ==> operator+(data1 , data2); 2) 成员函数的调用    operator+为对象data1的成员函数 data1 + data2    

C++11(13):重载运算与类型转换

除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参. 当以个重载的运算符是成员函数时,this绑定到左侧运算对象.成员运算符函数的(显式)参数比运算对象的数量少一个. 当运算符作用于内置类型的运算对象时,我们无法改变运算的含义. ::              .*                     .          ?:   这四个运算符不能被重载. 我们只能重载已有的运算符,不能发明新的.优先级和结合律不变. data1 + data2; operat

第十五章、重载运算与类型转换

一.基本概念 1.重载运算符是具有特殊名字的函数:由关键字operator和其他要定义的运算符号共同组成 2.重载运算符的参数数量与该运算符作用的运算对象一样多 当一个重载的运算符是成员函数时,this会绑定到左侧运算对象,成员运算符函数的显示参数数量比运算对象的数量少一个 3.对于一个运算符函数,它要么是类的成员,或者至少含有一个类类型的参数 当作用符作用于内置类型的运算对象时,无法改变该运算符的含义 例: //非成员运算符函数的等价调用 data1 + data2: //普通的表达式 ope

重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符

一.基本概念 重载的运算符时具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.和其他函数一样,重载的运算符也包含返回类型.参数列表以及函数体. 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多.一元运算符有一个参数,二元运算符有两个.对于二元运算符来说,左侧运算对象传递给第一个参数,而右侧运算对象传递给第二个参数.除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参. 当一个重载的运算符时成员函数时,this绑定到左侧运算

【转】让你不再害怕指针——C指针详解(经典,非常详细)

前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧: [cpp] view plain copy int p; //这是一个普通的整型变量 int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,