C++的指针和引用
在C++中,指针和引用都是用于间接或直接访问内存位置的,但它们之间有一些关键的区别。
指针(Pointer)
指针是一个变量,其值为另一个变量的内存地址。通过指针,你可以访问或修改那个内存地址所存储的值。
指针的声明
cpp
复制
int* ptr;
指针的初始化
cpp
复制
int x = 10; int* ptr = &x; // ptr现在指向x的内存地址
访问和修改值
cpp
复制
*ptr = 20; // 通过指针修改x的值
指针的算术操作
++:指针自增,指向下一个内存地址。
--:指针自减,指向前一个内存地址。
+ 和 -:用于计算两个指针之间的距离。
->:用于访问结构体或类成员。
动态内存分配
使用new和delete关键字进行动态内存分配。
cpp
复制
int* ptr = new int(5); // 动态分配一个int类型的内存 delete ptr; // 释放动态分配的内存
引用(Reference)
引用是一个变量的别名,一旦初始化,它的值就不能再改变。
引用的声明
cpp
复制
int& ref = x; // ref是x的别名
引用的初始化
cpp
复制
int x = 10; int& ref = x; // ref现在和x指向同一个内存地址
访问值
cpp
复制
ref = 20; // 通过引用修改x的值
引用的特点
引用必须在初始化时被赋予一个值。
引用一旦被初始化,就不能被赋予另一个值。
引用不能被赋予nullptr,也不能被重新绑定。
指针和引用的比较
指针可以被赋予nullptr,也可以重新绑定。
指针可以指向动态分配的内存。
引用必须始终指向一个有效的对象。
指针和引用的用途
指针常用于动态内存分配和数组操作。
引用常用于函数参数传递,因为它提供了对原始数据的直接访问。
指针和引用是C++中非常重要的概念,它们允许程序员更灵活地控制内存访问,是C++高效编程的关键部分。