欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 指针进阶(多级指针)

指针进阶(多级指针)

2025/5/6 14:33:11 来源:https://blog.csdn.net/kaneki_lh/article/details/141723055  浏览:    关键词:指针进阶(多级指针)

0.多级指针命名

        多级指针命名,最主要的是要知道该指针指向的是什么数据。

        一.1级指针 - 指向一个变量

                若定义一个变量 int a,那么 目标类型就为 int。

                所以该指针应该定义为 int *p;

/* 目标 */
int a;/* 目标类型 *p */
int *p;/* 指向目标 */
p = a;

二.2级指针

        若定义一个一级指针 int *p1,那么目标类型就为 int *

        定义一个二级指针,使其指向 p1,该指针应该为 int * *p;

int a = 0;/* 目标 */
int *p1 = &a;/* 目标类型 *p */
int* *p2;/* 二级指针,存的是一级指针的地址 */
p2 = &p1;

        

三.二级指针与指针数组

         p[] 里面存储了数组元素 a[0] 、a[1] 的地址;q 存储了数组元素 p[0] 的地址;

        (1).数组 p[] 来表示 a[1] 的值

                        ①.p[1] 存储了 a[1] 元素的地址;

                        ②.对 p[1] 元素进行解引用,则得到 a[1] 的值;

        (2).用指针 q 来表示 a[1] 的值

                        ①.q 存储了 p[0] 的地址,所以第一步 *(p+1) 得到 p[1] 的值;

                        ②. p[1] 存储了 a[1] 元素的地址,即 *(p+1) 表示 a[1] 的地址

                        ③.对 *(p+1) 进行解引用 **(p+1) 得到 a[1] 的值

    int a[] = {3,6,9};int *p[] = {&a[0],&a[1]};int* *q = &p[0];    //等价于 int* *q = p;printf("a[1] : %d\n",a[1]);printf("a[1] : %d\n",*p[1]);printf("a[1] : %d\n",**(q + 1));return 0;

版权声明:

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

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

热搜词