- C++ 基础
- C++ 首页
- C++ 概述
- C++ 环境设置
- C++ 基本语法
- C++ 注释
- C++ Hello World
- C++ 省略命名空间
- C++ 常量/字面量
- C++ 关键字
- C++ 标识符
- C++ 数据类型
- C++ 数值数据类型
- C++ 字符数据类型
- C++ 布尔数据类型
- C++ 变量类型
- C++ 变量作用域
- C++ 多个变量
- C++ 基本输入/输出
- C++ 修饰符类型
- C++ 存储类
- C++ 运算符
- C++ 数字
- C++ 枚举
- C++ 引用
- C++ 日期和时间
- C++ 控制语句
- C++ 决策制定
- C++ if 语句
- C++ if else 语句
- C++ 嵌套 if 语句
- C++ switch 语句
- C++ 嵌套 switch 语句
- C++ 循环类型
- C++ while 循环
- C++ for 循环
- C++ do while 循环
- C++ foreach 循环
- C++ 嵌套循环
- C++ break 语句
- C++ continue 语句
- C++ goto 语句
- C++ 构造函数
- C++ 构造函数和析构函数
- C++ 复制构造函数
C++ 指向数组的指针
在学习与 C++ 指针相关的章节之前,您很可能无法理解本章内容。
因此,假设您对 C++ 中的指针有一点了解,让我们开始:数组名称是指向数组第一个元素的常量指针。因此,在声明中 -
double balance[50];
balance 是指向 &balance[0] 的指针,它是数组 balance 第一个元素的地址。因此,以下程序片段将 p 赋值为 balance 第一个元素的地址 -
double *p; double balance[10]; p = balance;
可以使用数组名称作为常量指针,反之亦然。因此,*(balance + 4) 是访问 balance[4] 数据的合法方法。
将第一个元素的地址存储在 p 中后,您可以使用 *p、*(p+1)、*(p+2) 等访问数组元素。以下示例显示了上面讨论的所有概念 -
#include <iostream> using namespace std; int main () { // an array with 5 elements. double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = balance; // output each array element's value cout << "Array values using pointer " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "Array values using balance as address " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(balance + " << i << ") : "; cout << *(balance + i) << endl; } return 0; }
编译并执行上述代码时,会产生以下结果 -
Array values using pointer *(p + 0) : 1000 *(p + 1) : 2 *(p + 2) : 3.4 *(p + 3) : 17 *(p + 4) : 50 Array values using balance as address *(balance + 0) : 1000 *(balance + 1) : 2 *(balance + 2) : 3.4 *(balance + 3) : 17 *(balance + 4) : 50
在上面的例子中,p 是指向 double 的指针,这意味着它可以存储 double 类型变量的地址。一旦我们在 p 中有了地址,那么 *p 将给我们提供存储在 p 中的地址处的值,如上例所示。
广告