C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别

原创 2012年03月27日 08:22:21

一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《C语言核心技术》,明白了其中的奥妙。

 

相同点:两个都是二元操作符,其右操作符是成员的名称。

 

不同点:点操作符左边的操作数是一个“结果为结构”的表达式;

                箭头操作符左边的操作数是一个指向结构的指针。

 

举例说明:

#include <string.h>

 

Song_t  song1,song2,                        //两个Song_t类型的对象

                *pSong = &song1;              //和一个指向Song_t的指针

 

strcpy(song1.composer,"Ottma Liebert");

song1.duration = 251;

song1.published.year = 1998;

if((*pSong).duration >180)

     printf("The song is more than 3 mimutes long.\n");

 

--最后一句也可以改写为:

if(pSong->duration > 180) ....

 

 

另外一点体会:如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

int  iSetValue(Song_t *pSong)

{

  strcpy( pSong ->composer,"123");

  pSong->duration = 251;

 ...

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

c语言中箭头的用法

运算符 -> 是指向结构体成员运算符,结合方向为自左向右。 举例说明如下: #include // 结构体的声明与定义 struct {     char name[10];   ...
  • jml908
  • jml908
  • 2016年01月07日 10:27
  • 583

C 语言结构体之点运算符( . )和箭头运算符( -> )的区别

很多时候,在对结构体进行相应的编码时,时而发现是用点运算符( . ),时而是用箭头运算符( -> );那么这两者之间的使用有什么区别么? 相同点:两者都是二元操作符,而且右边的操作符都是成员的名称。 ...

指向运算符与成员运算符的区别

 成员运算符.与指向运算符->的区别 1、当使用成员运算符的时候,定义普通的变量,同样在C++中就 是定义类的普通对象,然后就可以用成员运算符访问变量或者 对象的数据成员和成员函数。 ...
  • muzhiai
  • muzhiai
  • 2014年01月04日 15:26
  • 1750

C/C++中的成员运算符(.)和指针运算符(->)

C语言中: 我们临时定义一个结构体: struct StuInfo{ int num; char name[20]; char sex; float score; }; //初始化两个...

结构体成员的访问(->和 . )

结构体成员的访问(->和 . )

C语言中访问结构体成员时 点 . 和 箭头 -> 的区别

点(.)是用于结构体变量访问成员,箭头(->)是用于结构体指针访问成员。    例如: #include int main(void) { struct Smy { int ...

C中对于结构体成员的两种引用方式适用场合的区别

C中对于结构体成员的两种引用方式: 1、结构体变量.成员; 2、结构体变量->成员;其中,第一种方式只能在结构体变量是结构体实体时能使用,而第二种方式是当结构体变量为指针类型的时候使用。 请看下...
  • lds_lsj
  • lds_lsj
  • 2015年08月29日 19:44
  • 1886

C/C++中结构成员运算符(.)和间接成员运算符(->)的运用

#includeint main(void){int i=12;struct part_date_tag{  int month;}pp;struct part_date_tag *p;p=&pp;p...
  • net2kc
  • net2kc
  • 2004年11月07日 02:05
  • 2610

C语言与C++中点运算符与箭头运算符的区别

在c++中I如果是对象,就可以通过"."来调用I中的成员变量。 如果I是指针的话,就不能通过"."来调用,而只能使用"->"来调用。 在C语言中不存在对象的概念。 这种情况的出现是因为使用了结构...

c/c++中结构体引用中箭头->与点.的区别 【转】

首先介绍一下C++中的结构。对于一个结构来说,struct MyStruct{       int member_a; }; 如果有个变量MyStruct s,那么使用其中的成员元素时可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
举报原因:
原因补充:

(最多只允许输入30个字)