1.作为参数传递可以改变参数指针指向的位置。
#include <bits/stdc++.h>
using namespace std;
int* b = new int(2);//申请一个int的空间,赋值为2,并定义一个int类型的指针b指向该地址
void Func(int** num)
{
*num = b;//a的地址等于b的地址
}
int main()
{
int* a = new int(1);//申请一个int的空间,赋值为1,并定义一个int类型的指针a指向该地址
Func(&a);//将a地址的地址传入函数
cout << *a << endl;//输出a的地址(此时a的地址等于b的地址,也就是输出b的地址)
}
2.可以动态分配内存
#include <iostream>
using namespace std;
int main()
{
int **p;
int i,j; //p[4][8]
//开始分配4行8列的二维数据
p = new int *[4];
for(i=0;i<4;i++){
p[i]=new int [8];
}
for(i=0; i<4; i++){
for(j=0; j<8; j++){
p[i][j] = j*i;
}
}
//打印数据
for(i=0; i<4; i++){
for(j=0; j<8; j++)
{
if(j==0) cout<<endl;
cout<<p[i][j]<<"\t";
}
}
//开始释放申请的堆
for(i=0; i<4; i++){
delete [] p[i];
}
delete [] p;
return 0;
}