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++ 运算符 C++ 算术运算符 C++ 关系运算符 C++ 逻辑运算符 C++ 位运算符 C++ 赋值运算符 C++ sizeof 运算符 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++ 字符串比较

C++ 函数

C++ 函数 C++ 多函数参数 C++ 递归函数 C++ 返回值 C++ 函数重载 C++ 函数重写 C++ 默认参数

C++ 数组

C++ 数组 C++ 多维数组 C++ 指向数组的指针 C++ 将数组传递给函数 C++ 从函数返回数组

C++ 结构 &联合

C++ 结构 C++ 联合

C++ 指针

C++ 指针 C++ 解引用 C++ 修改指针

C++ 类和对象

C++ 面向对象 C++ 类 &对象 C++ 类成员函数 C++ 类访问修饰符 C++ 静态类成员 C++ 静态数据成员 C++ 静态成员函数 C++ 内联函数 C++ this 指针 C++ 友元函数 C++ 指向类的指针

C++ 构造函数

C++ 构造函数 &析构函数 C++ 默认构造函数 C++ 参数化构造函数 C++ 复制构造函数 C++ 构造函数重载 C++ 带默认参数的构造函数 C++ 委托构造函数 C++ 构造函数初始化列表 C++ 使用构造函数动态初始化

C++ 继承

C++ 继承 C++ 多重继承 C++ 多级继承

C++ 面向对象

C++ 重载 C++ 多态性 C++ 抽象 C++ 封装 C++ 接口 C++ 虚函数 C++ 纯虚函数与抽象类

C++ 文件处理

C++ 文件和流 C++ 文件读取

C++ 进阶

C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 套接字编程 C++ 并发 C++ 高级概念 C++ Lambda 表达式 C++ unordered_multiset

C++ 实用资源

C++ 问答 C++ 快速指南 C++ 速查表 C++ STL 教程 C++ 标准库 C++ 实用资源 C++ 讨论


C++ 指针

C++ 指针学习起来既简单又有趣。有些 C++ 任务用指针更容易完成,而有些 C++ 任务,例如动态内存分配,如果没有指针就无法完成。

众所周知,每个变量都是一个内存位置,每个内存位置都有其定义的地址,可以使用表示内存地址的 & 运算符来访问。考虑下面的代码,它将打印定义变量的地址 -

#include <iostream>

using namespace std;
int main () {
   int  var1;
   char var2[10];

   cout << "Address of var1 variable: ";
   cout << &var1 << endl;

   cout << "Address of var2 variable: ";
   cout << &var2 << endl;

   return 0;
}

当编译并执行上述代码时,它会产生以下结果 -

Address of var1 variable: 0xbfebd5c0
Address of var2 variable: 0xbfebd5b6

什么是指针?

指针是一个变量,其值是另一个变量的地址。与任何变量或常量一样,必须先声明指针才能使用它。指针变量声明的一般形式为:-

type *var-name;

其中,type是指针的基类型;它必须是有效的 C++ 类型,var-name是指针变量的名称。用于声明指针的星号与用于乘法的星号相同。但是,在此语句中,星号用于将变量指定为指针。以下是有效的指针声明:-

int *ip; 		// 指向整数的指针
double *dp; 	// 指向双精度浮点数的指针
float *fp; 		// 指向浮点数的指针
char *ch 		// 指向字符的指针

所有指针(无论是整数、浮点数、字符型还是其他类型)的实际数据类型都是相同的,即一个表示内存地址的长十六进制数。不同数据类型的指针之间的唯一区别在于指针指向的变量或常量的数据类型。

在 C++ 中使用指针

有一些重要的操作,我们会经常使用指针进行这些操作。(a) 我们定义一个指针变量。(b) 将变量的地址赋给指针。(c) 最后访问指针变量中可用地址的值。这通过使用一元运算符 * 来完成,该运算符返回其操作数指定地址处的变量的值。以下示例使用了这些操作 −

#include <iostream>

using namespace std;

int main () {
    int var = 20; 	// 实际变量声明。
    int *ip; 		// 指针变量
    
    ip = &var; 		// 将 var 的地址存储在指针变量中

    cout << "Value of var variable: ";
    cout << var << endl;
    
    // 打印存储在 ip 指针变量中的地址
    cout << "Address stored in ip variable: ";
    cout << ip << endl;
    
    // 访问指针中可用地址的值
    cout << "Value of *ip variable: ";
    cout << *ip << endl;
    
    return 0;
}

当上述代码被编译并执行时,它会产生如下结果 -

Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20

C++ 中的指针

指针的概念很多,但都很简单,它们对 C++ 编程至关重要。以下是一些重要的指针概念,C++ 程序员应该清楚了解 -

Sr.No 概念 &说明
1 空指针

C++ 支持空指针,它是在多个标准库中定义的值为零的常量。

2 指针运算

指针可以使用四个算术运算符:++、--、+、-

3 指针 vs 数组

指针和数组之间有着密切的关系。

4 指针数组

你可以定义数组来保存多个指针。

5 指针到指针

C++ 允许在指针上放置指针,因此开启。

6 将指针传递给函数

通过引用或地址传递参数,都可以使被调用函数在调用函数中更改传递的参数。

7 从函数返回指针

C++ 允许函数返回指向局部变量、静态变量和动态分配内存的指针。