南门小子

网页备忘录。。。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
// pointers to structures
#include ‹iostream.h›
#include ‹stdlib.h›

struct movies_t {
char title [50];
int year;
};

int main () {
char buffer[50];

movies_t amovie;
movies_t * pmovie;
pmovie = & amovie;

cout << "Enter title: ";
cin.getline (pmovie->title,50);
cout << "Enter year: ";

cin.getline (buffer,50);
pmovie->year = atoi (buffer);

cout << "\nYou have entered:\n";
cout << pmovie->title;
cout << " (" << pmovie->year << ")\n";

return 0;
}

上面的代码中引入了一个重要的操作符:->。这是一个引用操作符,常与结构或类的指针一起使用,以便引用其中的成员元素,这样就避免使用很多括号。例如,我们用:

pmovie->title

来代替:

(*pmovie).title

以上两种表达式pmovie->title 和 (*pmovie).title 都是合法的,都表示取指针pmovie 所指向的结构其元素title 的值。我们要清楚将它和以下表达区分开:

*pmovie.title

它相当于

*(pmovie.title)

表示取结构pmovie 的元素title 作为指针所指向的值,这个表达式在本例中没有意义,因为title本身不是指针类型。

下表中总结了指针和结构组成的各种可能的组合:

表达式描述等价于
pmovie.title 结构pmovie 的元素title
pmovie->title 指针pmovie 所指向的结构其元素title 的值 (*pmovie).title
*pmovie.title 结构pmovie 的元素title 作为指针所指向的值 *(pmovie.title)
posted on 2011-09-21 20:08  南门小子  阅读(268)  评论(0编辑  收藏  举报