C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
来源:互联网 发布:a标签用js去掉下划线 编辑:程序博客网 时间:2024/05/01 23:16
一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《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;
...
}
0 0
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别(转)
- C/C++疑问之存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别http://blog.csdn.net/taric_ma/article/details/7397362
- C 语言结构体之点运算符( . )和箭头运算符( -> )的区别
- C语言中访问结构体成员时 点 . 和 箭头 -> 的区别
- 结构体的大小,对齐方式,点运算符和箭头运算符,#pragma pack(4)
- 成员运算符(·)和指向结构体成员运算符(->)的区别
- 成员运算符(·)和指向结构体成员运算符(->)的区别
- 指针的点运算和箭头运算(->)的区别
- C语言与C++中点运算符与箭头运算符的区别
- 结构体中访问成员点操作符和箭头操作符的区别
- 指针的点运算和箭头运算(->)
- C/C++中结构成员运算符(.)和间接成员运算符(->)的运用
- C++学习笔记(十一):成员访问运算符(点运算和箭头运算)
- 黑马程序员——c语言基础:运算符和分支结构的一些注意点和练习
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- openssl之BIO系列之1---抽象的IO接口
- SQL Server中的一个奇怪问题
- 位于 XDB 的服务器 localhost 要求用户名和密码!!
- MYSQL的增量备份
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
- CRC32校验算法-C实现
- 《动物农场》读后感
- TMS320F28335项目开发记录3_28335简单介绍
- 【opencv】特征点检测方法--GFTT,SIFT,FAST,SURF
- Oracle DB内存管理
- iOS图片性能优化-TBImageView
- 自定义背景文件,android:shape的使用!
- 数据分析系统DIY2/3:本地64位WIN7+DEV C++编译程序操作VMware CentOS7+MariaDB