// 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) |