C++ - 引用与指针

文章介绍了C++中的引用和指针的概念,包括引用的声明与初始化,引用作为函数参数和返回值的作用,以及指针的声明、取址与解引用操作,动态内存分配,数组指针,指针算术运算,野指针和常量指针。同时阐述了引用与指针的区别,引用是已存在变量的别名,不能改变引用对象,而指针可以重新赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用与指针

引用

C++中的引用是一个已存在变量的别名,它提供了对变量的间接访问。引用可以被看作是一个已存在变量的别名,对引用的操作实际上就是对原变量的操作。

声明引用

声明引用:可以通过在变量名前加上引用符号(&)来声明一个引用。例如:int num = 10; int &ref = num; 声明了一个对整数类型变量num的引用ref。

初始化引用

初始化引用:引用必须在声明时进行初始化,并且一旦初始化后,就不能再引用其他变量。例如:int num = 10; int &ref = num; 引用ref被初始化为num。

引用和原变量的关系

引用和原变量的关系:引用和原变量共享同一块内存空间,对引用的修改会影响原变量的值,反之亦然。例如:int num = 10; int &ref = num; ref = 20; cout << num; 将输出20。

引用作为函数参数

引用作为函数参数:可以将引用作为函数的参数,这样可以**直接操作原变量而不是副本。**例如:

void increment(int &num) {
    num++;
}

int main() {
    int num = 10;
    increment(num);
    cout << num;  // 输出11
    return 0;
}

在这个例子中,我们将num的引用作为参数传递给increment函数,函数内部对引用进行操作会直接修改原变量num的值。

引用作为函数返回值

引用作为函数返回值:可以将引用作为函数的返回值,这样可以返回一个已存在的变量而不是副本。例如:

int& getMax(int &a, int &b) {
    return (a > b) ? a : b;
}

int main() {
    int num1 = 10;
    int num2 = 20;
    int &maxNum = getMax(num1, num2);
    cout << maxNum;  // 输出20
    return 0;
}

在这个例子中,getMax函数返回了num1和num2中较大的那个数的引用,我们将其赋值给maxNum引用,可以直接访问到较大的数。

指针

C++中的指针是一种特殊的变量类型,它存储了一个内存地址。指针可以用来访问和操作内存中的数据。

声明指针

声明指针:可以通过在变量名前加上星号(*)来声明一个指针变量。例如:int *ptr; 声明了一个指向整数类型的指针变量ptr。

取址运算符(&)

取址运算符(&):可以使用取址运算符(&)来获取变量的地址。例如:int num = 10; int *ptr = &num; 将num的地址赋值给ptr。

解引用运算符(*)

解引用运算符():可以使用解引用运算符()来访问指针所指向的内存中的值。例如:int num = 10; int *ptr = &num; cout << *ptr; 将输出10。

空指针

空指针:可以使用空指针来表示指针变量不指向任何有效的内存地址。空指针可以用nullptr关键字表示。例如:int *ptr = nullptr;

动态内存分配

动态内存分配:可以使用new关键字来在运行时动态地分配内存。例如:int *ptr = new int; 将在堆上分配一个整数大小的内存,并将其地址赋值给ptr。使用完后,需要使用delete关键字来释放内存,以防止内存泄漏。

数组指针

数组指针:指针也可以用来访问数组中的元素。例如:int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; 可以通过ptr[i]来访问数组中的第i个元素。

指针的算术运算

指针的算术运算:指针可以进行算术运算,如加法、减法等。例如:int *ptr = arr; ptr++; 将指针ptr向后移动一个元素的大小。

野指针

野指针:指针变量未初始化或者指向已经释放的内存时,称为野指针。使用野指针可能导致程序崩溃或者产生未定义的行为

指针和常量

指针和常量:可以使用const关键字来声明指向常量的指针,即指针所指向的值不能被修改。例如:const int *ptr = &num; 表示ptr是一个指向常量整数的指针。

指针和引用的区别

指针和引用的区别:指针和引用都可以用来间接访问变量,但是指针可以被重新赋值指向其他对象,而引用一旦绑定到一个对象后就不能再绑定到其他对象。

上一章:C++ - 函数
下一章:C++ - 进一步了解指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java橙旭源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值