二级指针补充
Posted SmartGame
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二级指针补充相关的知识,希望对你有一定的参考价值。
昨天对于分享了一些关于二级指针的见解,但是我感觉还是要对其在进行补充一下比较好,当时我在二级指针这方面迷糊了很久,即使是现在有时候也会犯迷糊;
当初我学二级指针的时候认为,一级指针必须指向了一个内存空间后才可以将它分配给一个二级指针;
也就是这样的:
{
int a;
int *b = NULL;
int **c = NULL;
b = &a;
c = &b;
}
刚开始我认为如果b不指向a 的空间,则不能建立一个二级指针指向他,也就是我当时认为,二级指针是指向一级指针所指向的内存空间的;
但是正如上次所说的那样,二级指针指向的是一级指针的空间,正是因为这样二级指针才可以操作一级指针的指向;
这正是无法用一级指针去改变另一个一级指针的原因;
{
int a = 10;
int b = 20;
int *c = NULL;
int *d = NULL;
c = &a;
d = c;//将c的指向赋给了d
d = &b;//这里改变了d的指向是不会改变c的指向的,d指向的是b的空间,只能操作b 的空间
}
所以说一级指针即使指向NULL 二级指针也能指向它
{
int *a = NULL;
int **b = &a;
}
而二级指针的作用也正是如此,可以操作一级指针的指向;
{
int *a = NULL;
int **b = NULL;
int *c = NULL;
b = &a;
*b = (int *)malloc(sizeof(int));//在堆区分配空间,并通过二级指针b 控制一级指针a 指向这块内存空间
b = &c;//这是改变了二级指针b 的指向;将它重新指向了c,这个改变不会影响 a 所指向的内存空间;
}
以上就是我对二级指针的一些补充,希望对大家有些帮助
以上是关于二级指针补充的主要内容,如果未能解决你的问题,请参考以下文章
C 语言二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )
C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
C 语言二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
C 语言二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 )
C 语言二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )