二级指针有什么用?举例说明
时间: 2024-02-09 21:36:58 浏览: 66
二级指针是指指向指针的指针,也称为指针的指针。它的主要作用是在函数中传递指针的地址,以便在函数内部修改指针指向的变量或数据,并使这些修改在函数外部得以保留。
举例来说,假设有一个函数需要接收一个指向整型数组的指针,并将其中的元素全部置为0。我们可以用一级指针来实现:
```
void setZero(int *arr, int size){
for(int i=0; i<size; i++){
arr[i] = 0;
}
}
int main(){
int arr[5] = {1, 2, 3, 4, 5};
setZero(arr, 5);
// arr 现在 {0, 0, 0, 0, 0}
return 0;
}
```
但如果我们想要在函数内部修改 arr 指向的变量(即数组指针本身),使其指向另一个数组,该如何实现呢?这时就可以用到二级指针:
```
void setZero(int **pArr, int size){
*pArr = new int[size];
for(int i=0; i<size; i++){
(*pArr)[i] = 0;
}
}
int main(){
int *pArr = nullptr;
setZero(&pArr, 5);
// 此时 pArr 指向一个长度为 5 的整型数组,元素都为 0
delete[] pArr;
return 0;
}
```
在这个例子中,我们将指向整型数组的指针 pArr 的地址传递给了函数 setZero 的二级指针参数 **pArr。函数内部通过 *pArr 操作间接修改了 pArr 指向的变量,使其指向了一个新的长度为 5 的整型数组。这种通过二级指针修改指针指向的方法,在动态内存分配、链表等数据结构中经常被使用。