- 指针是指针变量的简称,也是变量,有变量就有地址
- 指针用于存放普通变量的地址
- 二级指针用来存放指针变量的地址
- 声明二级指针的语法:数据类型** 指针名
例:int _tmain(int argc, _TCHAR* argv[]) { //指针是指针变量的简称,也是变量,有变量就有地址 //指针用于存放普通变量的地址 //二级指针用来存放指针变量的地址 //声明二级指针的语法:数据类型** 指针名 //使用指针有两个目的(1)传地址(2)存放动态分配的内存地址 //在函数中,如果传递普通变量的地址,形参用指针;传递指针的地址的地址,形参用二级指针 //为什么要传地址?把普通变量的地址传入函数中后,可以在函数中修改变量的值;把指针的地址传入函数后,可以在函数中修改指针的值 int ii = 8; cout << "ii=" << ii << ",ii的地址是:" << &ii << endl; int* pii = ⅈ cout << "pii=" << pii << ", pii的地址是:" << &pii<<",*pii="<<*pii << endl; //二级指针,就是指针的指针 int* *ppii = &pii; cout << "ppii=" << ppii << ", ppii的地址是:" << &ppii<<",*ppii=" <<*ppii<< endl; cout << "**ppii=" << **ppii << endl;//对ppii解两次引用 system("pause"); return 0; }
- 使用指针有两个目的(1)传地址(2)存放动态分配的内存地址
- 在函数中,如果传递普通变量的地址,形参用指针;传递指针的地址的地址,形参用二级指针
- 为什么要传地址?把普通变量的地址传入函数中后,可以在函数中修改变量的值;把指针的地址传入函数后,可以在函数中修改指针的值
应用案例,如果业务要求把分配内存的代码与声明指针的代码分开,代码如下/如果业务要求把分配内存的代码与声明指针的代码分开 //此函数功能为分配内存,然后把内存的地址赋给p,相当于要在函数中修改指针p的值,需要把指针p的地址传给函数 void func(int** pp)//生声明一个二级指针用来存放指针的地址 { *pp = new int(3);//对pp解引用之后就是p,給指针p分配内存 cout << "pp=" << pp << ",*pp=" << *pp << endl; } //调用 //如果业务要求把分配内存的代码与声明指针的代码分开,就需要把指针的地址传给另一个函数 int* p1 = NULL;//声明一个指针(指针要初始化) func(&p1);//在函数中分配内存,把p1的地址传进去
总结:如果需要在函数中修改指针的地址,就需要传递指针得地址,就需要用到二级指针
C++基础(七)--二级指针
于 2022-08-15 14:10:46 首次发布