简单地说,如果一个二级指针指向一个一级指针,那么这个二级指针的值就是那个一级指针的地址。就像如果一个一级指针指向一个变量,那么这个一级指针的值就是那个变量的存储地址,这样容易理解。这么推下去三级、四级甚至N级的指针都能明白。不过由于指针的操作既难又危险,容易出错,所以一般少用三级以上的指针。
定义:
数据类型 **指针名;
或
数据类型 **指针名 = XX类型的指针地址;
使用:
指针名 是这个二维指针 的地址
*指针名 是这个二维指针 所指向的指针(即一维指针) 的地址
**指针名 是这个二维指针 所指向的指针(即一维指针) 所指向的内容
看例子:
#include <iostream>
using namespace std
void main() {
char *s = "Hello"
char **p = &s
cout<<p<<endl<<*p<<endl<<endl
int a = 3
int *b = &a
int **c = &b
cout<<c<<endl<<*c<<endl<<**c<<endl
}
运行结果:
程序中有些问题:
1、函数的定义有错误(参数格式不对);
2、程序中没有调用函数(或者说是调用格式有误)
3、函数中的处理逻辑需要修改(一步一步来,这样容易处理和理解)。
你定义的函数是使用数组作为参数的,数组名本身就是个地址(相当于指针)。
下面在手机上用易历知食软件里的微C程序设计来演示修正后的代码并运行程序,供参考。
手机上修正后的代码如下图:
手机上运行的效果如下图所示: