立即学习:https://edu.csdn.net/course/play/10534/378151?utm_source=blogtoedu
学习目标
二级指针的含义。
二级指针的使用。
多级指针的含义。
多级指针使用。
二级指针
定义:
下面定义的是一个int类型的二级指针:
int a = 10;
int *p = &a; // 指向int变量
int **q = &p; // 类型却别
第一个*和第二个*有什么区别吗?
怎么理解它?
简单的理解就是指向指针的指针。
使用:
定义一个函数,函数有一个指针参数,我们希望通过函数修改指针的地址,让他指向新的变量。
#include <stdio.h>
// 是值传递
void fun(int **p, int *b) {
// p局部有效,出了这个函数就无效。
*p = b;
}
int main(int argc, char* argv[]) {
int a = 10;
int b = 20;
int *p = &a;
// 通过这个调用,是指针P指向变量b
printf("*p = %d, should is 10.\n", *p);
fun(&p, &b);
printf("*p = %d, should is 20.\n", *p);
return 0;
}
多级指针
int a = 10;
int *p1 = &a;
int **p2 = &p1;
int ***p3 = &p2;
// 越级指向,是警告,通过强制类型转换可以消除警告。
int ***p31 = (int***)&p1;