C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
2010-07-21 10:34
761 查看
上一篇讲述了关于指针和数组的关系,这次准备讲一下指向结构的指针的一些用法:
指向结构的指针(即结构指针)的用法和其他指针一样。它指向某种结构类型的一个实例,可以进行加减等算术运算。
不过,这时加上或减去的是结构的大小(结构中所有成员大小的总和)的整数倍。
通过结构指针访问结构成员需要使用成员指针运算符(->)。
示例如下:
运行结果如下:
请注意cout语句是如何引用两个结构成员的。这里没有采用点号(.)结构成员运算符,取而代之的是成员指针运算符(->)。
这两个运算符的区别是:
前者通过结构直接访问结构成员,后者通过指向结构的指针间接访问结构成员。
另外,需要特别注意的是:
数组以-1最为结束的标志,因此,while循环可以判定指针ep是否已经指到数组的末尾。
指向结构的指针(即结构指针)的用法和其他指针一样。它指向某种结构类型的一个实例,可以进行加减等算术运算。
不过,这时加上或减去的是结构的大小(结构中所有成员大小的总和)的整数倍。
通过结构指针访问结构成员需要使用成员指针运算符(->)。
示例如下:
#include <iostream> // Employee record. struct Employee { int emplno; float wage; }; // Array of Employee records. Employee emps[] = { { 1, 10.17 }, // #1 initialized { 2, 15.50 }, // #2 initialized { 3, 13.00 }, // #3 initialized {-1, 0 } // Terminal element }; //////////////////////////////////////// // The main() function. //////////////////////////////////////// int main() { // Initialize a pointer with the address of // the employee-records array. Employee* ep = emps; // Display the employee records. while (ep->emplno != -1) { std::cout << ep->emplno << ' ' << ep->wage << std::endl; ep++; } return 0; }
运行结果如下:
请注意cout语句是如何引用两个结构成员的。这里没有采用点号(.)结构成员运算符,取而代之的是成员指针运算符(->)。
这两个运算符的区别是:
前者通过结构直接访问结构成员,后者通过指向结构的指针间接访问结构成员。
另外,需要特别注意的是:
数组以-1最为结束的标志,因此,while循环可以判定指针ep是否已经指到数组的末尾。
相关文章推荐
- C/C++中关于地址、指针和引用变量的学习笔记(九) : 内存结构
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- C/C++中关于地址、指针和引用变量的学习笔记(一)
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- C++学习笔记2--函数重载 复杂的数据 内存对齐 指针数组 结构与指针 传值传址传引用 联合枚举类型别名
- C++ 学习笔记(2)变量和基本类型(复合类型:引用、指针)、const、constexpr、typedef(using)、auto、decltype
- 我的C++学习日记——关于const数值变量,指针和引用的理解
- VS2010 C++ 学习笔记(六) this指针 const 指针 引用
- C++学习笔记(13)——利用对象、引用、指针调用虚函数
- c++学习笔记1(指针和引用)
- C++学习笔记,指针变量的引用与引用的指针
- C++学习笔记(1)之传值、传指针、传引用的区别
- C++学习笔记30,指针的引用(2)
- C++学习笔记三——内联、宏和引用变量
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别