指针是指针变量的简称,也是变量,是变量就有地址。
指针用于存放普通变量的地址。
二级指针用于存放指针变量的地址。
声明二级指针的语法:数据类型** 指针名;
使用指针有两个目的:1)传递地址;2)存放动态分配的内存的地址。
在函数中,如果传递普通变量的地址,形参用指针;传递指针的地址,形参用二级指针。
把普通变量的地址传入函数后可以在函数中修改变量的值;把指针的地址传入函数后可以在函数中指针的值。
下面是一个C++示例代码,展示了如何使用二级指针(指针的指针)。这个示例中,我们将创建一个函数,该函数通过二级指针修改一级指针的值,进而改变普通变量的值。这个例子很好地说明了二级指针的两个主要用途:传递地址和存放动态分配的内存的地址。
示例代码:
#include <iostream>
using namespace std;
// 函数用二级指针作为参数,目的是修改一级指针的值
void modifyPointerValue(int** doublePtr) {
// 动态分配一块新的内存,并通过二级指针修改一级指针的值
*doublePtr = new int(20);
}
// 函数用指针作为参数,目的是修改普通变量的值
void modifyValue(int* ptr) {
*ptr = 10;
}
int main() {
int a = 5;
int* ptr = &a;
int** doublePtr = &ptr;
cout << "原始的a值:" << a << endl; // 输出:原始的a值:5
modifyValue(ptr);
cout << "修改后的a值:" << a << endl; // 输出:修改后的a值:10
modifyPointerValue(doublePtr);
cout << "通过二级指针修改后的a值:" << *ptr << endl; // 输出:通过二级指针修改后的a值:20
// 释放动态分配的内存
delete ptr;
return 0;
}
解析:
- 首先,我们声明了一个普通的整型变量
a
并初始化为5。 - 然后,我们声明了一个指针
ptr
,它存储了变量a
的地址。 - 接下来,我们声明了一个二级指针
doublePtr
,它存储了指针ptr
的地址。 - 通过调用
modifyValue
函数,并传入指针ptr
作为参数,我们可以修改a
的值。这个函数演示了如何使用一级指针在函数内修改普通变量的值。 - 通过调用
modifyPointerValue
函数,并传入二级指针doublePtr
作为参数,我们可以改变一级指针ptr
所指向的地址。这个函数演示了二级指针如何用来修改一级指针的指向。 - 最后,我们需要释放通过二级指针分配的内存,以避免内存泄露。
这个示例清楚地展示了二级指针的强大功能,它不仅可以用来在函数中修改普通变量的值,还可以改变指针本身的指向。这在需要在函数中动态分配内存或修改指针指向时非常有用。
标签:二级,函数,56,地址,指针,ptr,变量 From: https://blog.csdn.net/wuyihao123/article/details/137540815