close
一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《C语言核心技术》,明白了其中的奥妙。
相同点:两个都是二元操作符,其右操作符是成员的名称。
不同点:点操作符左边的操作数是一个“结果为结构”的表达式;
举例说明:
#include
Song_t song1,song2,
//两个Song_t类型的对象
strcpy(song1.composer,"Ottma Liebert");
song1.duration = 251;
song1.published.year = 1998;
if((*pSong).duration >180)
long.\n");
--最后一句也可以改写为:
if(pSong->duration > 180) ....
另外一点体会:如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。
int iSetValue(Song_t *pSong)
{
}
全站熱搜