欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > C语言指针-二级指针

C语言指针-二级指针

2025/5/11 9:07:38 来源:https://blog.csdn.net/qq_40939768/article/details/144321907  浏览:    关键词:C语言指针-二级指针

        在C语言中。二级指针时指向指针的指针。换句话说,就是一个二级指针变量存储另一个指针变量的地址。

目录

1、二级指针的声明

2、二级指针的使用

2.1、赋值

2.2、访问二级指针所指向的指针及值

2.3、二级指针的算数操作

3、二级指针与数组

4、二级指针与函数

5、注意事宜

6、总结


1、二级指针的声明

int **pptr;  /* 声明一个指向整型指针的二级指针 */

2、二级指针的使用

2.1、赋值

int var = 100;
int *ptr = &var;    /* 一级指针,指向var */
int **pptr = &ptr;  /* 二级指针,指向ptr */

2.2、访问二级指针所指向的指针及值

        要访问二级指针所指向的一级指针的值,需要进行两次解引用:

printf("%d", **pptr);  /* 首先解引用pptr得到ptr,然后解引用ptr得到var的值,即100 */

2.3、二级指针的算数操作

        通常情况下,不建议不鼓励对二级指针进行算术操作,因为这样做没有实际意义,且易容易犯错。

3、二级指针与数组

        二级指针可以用来表示数组的指针。例如:一个二维数组的元素是一维数组,其行指针可以存储在一个指针数组中,而这个指针数组的地址可以用一个二级指针表示。

#include <stdio.h>int main() {int numbers[5] = {100, 200, 300, 400, 500};  // 声明一个整型数组int *ptrs[5];  // 声明一个指针数组,用于存储指向整型的指针int **pptrs;   // 声明一个二级指针// 初始化指针数组,使每个指针指向数组numbers的一个元素for (int i = 0; i < 5; i++) {ptrs[i] = &numbers[i];}// 初始化二级指针,使其指向指针数组pptrs = ptrs;// 使用二级指针访问数组元素for (int i = 0; i < 5; i++) {printf("%d\n",**(pptrs + i));}return 0;
}

 运行结果如下:

100
200
300
400
500

4、二级指针与函数

        二级指针可以作为参数传递给函数,并修改一级指针的值:

#include <stdio.h>void changePointer(int **pp, int *newPtr) {*pp = newPtr;  // 修改pp所指向的一级指针的值
}int main() {int var = 12;int *ptr = &var;    /* var地址传递给指针ptr */int anotherVar = 25;int *newPtr = &anotherVar; /* anotherVar的地址传递给newPtr指针  */ int **pptr = &ptr;    /* 声明一个二级指针指向指针ptr */changePointer(pptr, newPtr);  // 修改pptr所指向的指针printf("%d", *ptr);  // 输出25,因为ptr现在指向anotherVarreturn 0;
}

输出结果如下:      

25

5、注意事宜

        a、二级指针的使用相对较少,通常只在处理指针数组或需要修改指针本身的情况下使用

        b、在使用二级指针时,必须确保指针正在初始化和解引用是正确的,以避免未定位的行为。

6、总结

        既然二级指针的使用较少,那为什么又要专门编写此章节呢?这也是最近一位考证的学子最近在询问该类问题,索性就写了这两张内容。也算是对知识的一个总结吧。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词