int* p;//这是声明了一个一级指针变量p,p是一个地址*p;//*p就是去这个地址中获取数据int**p//这个P,也是一个指针变量,而且是一个二级,内部存放的也是一个地址*p//就是使用二级地址去获取了其中内容(内容是一级指针的地址)*(*p)//*p先获取了一级指针的地址,*(*p)就是根据一级指针地址去获取数据 二....
“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”: 实参 所匹配的形参 数组的数组 char c[8][10]; char (*)[10]; 数组指针 指针数组 char *c[10]; char **c; 指针的指针 数组指针(行指针) char (*c)[10]; char (*c)[10]; ...
由此可以看出 , array 的每个 跳转步长 是 10 10 10 字节 , array + 2 相当于跳了 20 20 20 字节 , 才能访问到第 3 3 3 个元素 array[2] ; 正是由于 上述 跳转步长 的问题 , 在函数中 , 形参 必须是 二维数组 , 不能是 二维指针 ; /* * 此处遍历时 , 注意指针的步...
int **p //这个P,也是一个指针变量,而且是一个二级,内部存放的也是一个地址 *p //就是使用二级地址去获取了其中内容(内容是一级指针的地址) *(*p) //*p先获取了一级指针的地址,*(*p)就是根据一级指针地址去获取数据 1. 2. 3. 4. 5. 6. 7. 8. 二. 二级指针和二维数组的错误用法 int a[3][...
创建一个一维数组,数组中的元素是指向其他东西的指针。也可以说是二级指针。 函数是: 1 intfun3(int**arr); 注意:只有把二维数组改为一个指向向量的指针数组的前提下才可以这么做! 比如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream>usingnamespacestd;voidtest(char**ptr){cout<<*ptr...
也可以说是二级指针。 函数是: 1 int fun3(int **arr); 注意:只有把二维数组改为一个指向向量的指针数组的前提下才可以这么做! 比如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream> using namespace std; void test(char **ptr) { cout << *ptr << endl; } int main() ...