📅  最后修改于: 2023-12-03 15:23:22.147000             🧑  作者: Mango
在C/C++中,我们可以创建多级指针。一个指针变量可以指向另一个指针变量,这就形成了指针的链表,链表的长度就是指针的级数。
一级指针是指向一个数据对象的指针。我们可以使用*
运算符来解引用一级指针,访问该指针所指向的数据对象。
int x = 5;
int *p1 = &x; // 定义一个指向x的指针
*p1 = 10; // 解引用p1,将x的值设置为10
二级指针是指向一个指向数据对象的指针的指针。我们可以使用两个*
运算符来解引用二级指针,访问它指向的指针所指向的数据对象。
int x = 5;
int *p1 = &x; // 定义一个指向x的指针
int **p2 = &p1; // 定义一个指向p1的指针
**p2 = 10; // 解引用p2和p1,将x的值设置为10
三级指针是指向一个指向指向数据对象的指针的指针的指针。我们可以使用三个*
运算符来解引用三级指针,访问它指向的指向指针所指向的数据对象。
int x = 5;
int *p1 = &x; // 定义一个指向x的指针
int **p2 = &p1; // 定义一个指向p1的指针
int ***p3 = &p2; // 定义一个指向p2的指针
***p3 = 10; // 解引用p3、p2和p1,将x的值设置为10
在理论上,我们可以创建任意级别的指针。也就是说,我们可以定义一个指向指向指向...指向数据对象的指针的指针...的指针的指针。
然而,在实际编程中,我们很少需要这么高的级数。直到三级指针,很少有情况需要使用。过多的指针层次可能导致程序逻辑上的复杂性和编码难度的增加。