鱼C论坛

 找回密码
 立即注册
查看: 2124|回复: 6

[已解决]指向指针的指针存在的意思是什么?

[复制链接]
发表于 2018-3-29 17:13:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一直没搞明白指向指针的指针有什么优势?请大侠们赐教。谢谢!
最佳答案
2018-3-29 17:17:54
可以用来指向字符串数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-29 17:17:54 | 显示全部楼层    本楼为最佳答案   
可以用来指向字符串数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-29 17:23:14 | 显示全部楼层
BngThea 发表于 2018-3-29 17:17
可以用来指向字符串数组

有道理,谢谢大侠。看参考书讲指向指针的指针举例都是二维数组,感觉多此一举啊。除了能把我整蒙之外没啥卵用。大侠一句醍醐灌顶,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 18:05:17 | 显示全部楼层
2018-03-29_180446.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-29 18:54:13 | 显示全部楼层
我想你应该是在问二级指针存在的意义吧?剩下的如果你真正想了解的话可以百度下他的意义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 14:42:52 | 显示全部楼层
本帖最后由 风扫地 于 2018-3-30 15:06 编辑

1、C语言的是面向内存的语言,所有的变量( 包括指针变量 )的定义都是向内存申请空间然后放数据。
2、指针变量代表着有 sizeof( ( void *) ) 字节 的空间被申请分配下来,里面存放的数据通常用来表示另外一个 变量/函数 在内存中的地址。
3、指针的指针变量 代表着 有 sizeof( (void **)) 字节的空间被申请下来,里面存放的数据也是地址,只不过这个地址指向的空间存放的是一级指针。
形象化地解释见本帖的4楼。


int a = 0;  /*  申请 sizeof( int) 个字节的长度的空间 ,里面放一个数据 0 */
int *p = &a; /* 申请 sizeof( int *) 个字节长度的空间 ,把整形变量a的地址存放在 p对应的空间中 */
int **q = &p; /* 申请sizeof( int **)个字节长度的空间,把指针变量p的地址存放在q对应的空间中 */



二级指针使用举例:

有需求场景,才会创造新的解决机制。
上面的代码中,p指向的是a,如果我们想通过调用一个函数将p的指向更改为一个全局变量,能够区别值传递和地址传递的你一定知道要得到p的地址才能改变p的值,p的地址获取以后我们要赋值给什么类型的变量了? 这样二级指针变量就顺势引出了。。。当然这个例子比较简单,在一些复杂数据结构里面,比如在链表中,想封装头指针的指向改变的函数这样的应用场景。

void changeP( int ** q)
{
    *q = &global_var; // global_var是某个全局变量的名字
}

此函数的调用方式为:
int **q = &p;
changeP(q);
或者
changeP( &p);

举例参考:
https://blog.csdn.net/lisngwei/article/details/44097787
https://www.baidu.com/s?wd=%E4%B ... %99%AF&ie=UTF-8


【愿天下提问人按时结贴】





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 02:25:19 | 显示全部楼层
本帖最后由 桃花飞舞 于 2018-3-31 02:27 编辑

void GetMemory(char **p, int num)
{
    *p=(char*)malloc(num);
}
void Test(void)
{
        char *str=NULL;
        GetMemory(&str, 100);
        strcpy(str, "hello");
        printf(str);
}

不知道能和楼主问的问题一不一样,我感觉有点关系,专业的名词我不懂》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 19:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表