数据结构(Data structures)(二):结构体指针
2014-03-26 14:38
197 查看
Pointers to structures
像其它数据类型一样,结构体也可以有指针。可以被它自己的类型的指针所指向。其规则同其它基本数据类型一样:struct movies_t{
string title;
int year;
};
movies_t amovie;
movies_t* pmovie;
这里 amovie 是一个结构体 movies_t 的对象,而pmovie 是一个指向结构体movies_t 的对象的指针。所以,同基本数据类型一样,以下表达式也是正确的:
pmovie = &amovie;
现在,让我们看一个包含有指针和结构体的例子,这里我们将引入一个新的操作符——箭头操作符(->):
#include <iostream> #include <string> #include <sstream> using namespace std; struct movies_t { string title; int year; }; int main () { string mystr; movies_t amovie; movies_t * pmovie; pmovie = &amovie; cout << "Enter title: "; getline (cin, pmovie->title); cout << "Enter year: "; getline (cin, mystr); (stringstream) mystr >> pmovie->year; cout << "\nYou have entered:\n"; cout << pmovie->title; cout << " (" << pmovie->year << ")\n"; return 0; } | Enter title: Invasion of the body snatchers Enter year: 1978 You have entered: Invasion of the body snatchers (1978) |
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) |
相关文章推荐
- 数据手动输入c++ 结构体练习 结构体重的char数组指针
- 数据结构(Data structures)(三):结构体嵌套
- 数据结构预备知识之指针,结构体和动态内存的分配与释放
- delphi利用指针,结构或component存储数据表数据
- 数据结构之二叉树的非递归实现及“狡猾”的指针
- C 语言通过结构体成员获得结构体指针
- 【数据结构】单链表—求链表中间节点(只遍历一次链表)— 快慢指针
- C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录
- 指针用法之一:给定结构体求某变量的偏移量,给出某变量偏移量求结构体首地址
- C++类继承转换为C结构体,C结构体指针之间强制类型转换
- 数据结构指针
- 第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现
- 结构体、结构体体指针作为函数返回值
- 数据结构之快慢指针查找链表中间结点
- 结构体、结构指针作为函数参数
- debug : 如果结构中有非内建类型数据,不能用ZeroMemory来清零结构体内存
- 数据结构—头指针和头结点分析
- 结构体指针与结构体名做函数参数对比
- 指针结构体_数组指针结构体_指针数组结构
- 数据结构与算法 - 两个指针搞定字符串操作