C/C++二级指针

  1. 什么是二级指针:二级指针即指向指针的指针。比如下图,B指向C,A指向B,则A是C的二级指针。

 

        int a =100; int *p1 = &a; int **p2 = &p1;或者int a[3] ={1,3,4}; int **p2 = a;(数组名即数组的地址)。

使用:如果在在函数外部定义一个指针p,需要通过一个函数对p进行修改。那么需要传入p的指针,即二级指针。

例如:

#include<iostream>
 
using namespace std;
 
int a = 1;
int b = 2;

 
void func(int **p)  //传入二级指针
{
	*p = &b; //修改指针
}
 
 
int main()
{
	int *q; //在函数外定义的指针
	q = &a; 
	func(&q); //完成对指针q的修改
	return 0;
}

   如果函数传入的是一级指针,func(int *p) 那么由于函数是对传入的副本进行操作(可以理解为,传入一个不是引用的普通参数,而在函数体内进行修改,修改的只能是副本)并不能完成对传入指针的修改。

二级指针在二维数组中的应用:C++中数组本就是指针,指向数组的第一个元素。那么二维指针可以认为是一个一维数组里面存放的全部都是指针。比如创建一个二维数组:

int **dp=new int*[n];//动态申请二维数组nxm

for(int i=0;i<n;++i){

  dp[i]=new int[m];

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值