社区
C语言
帖子详情
双指针究竟什么时候用到?
c_primer_
2006-04-07 01:13:18
谢谢了
...全文
1067
12
打赏
收藏
双指针究竟什么时候用到?
谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
allen_wang
2006-04-07
打赏
举报
回复
你有一个指针,当需要改其值时,如果需要交由一个函数来修改,而且是通过参数传入做修改,那就要传这个指针的地址,也就是说参数类型是指针的指针了。
c_primer_
2006-04-07
打赏
举报
回复
void swap(int **p1,int **p2)
{
/* int **p = *p1;*/
int **p = p1;//更改为这样
*p1 = *p2;
*p2 = *p;
}
——————————调试出错
第一个值等于第二个了,但第二个没变。。。
头昏昏的。。。看得。
请问jixingzhong,“操作结果将不能反馈回去 ...”是什么意思啊。反馈到哪去?
很不好意思。麻烦你了!
imfeather
2006-04-07
打赏
举报
回复
void swap(int **p1,int **p2)
{
/* int **p = *p1;*/
int **p = p1;//更改为这样
*p1 = *p2;
*p2 = *p;
}
——————————调试出错
c_primer_
2006-04-07
打赏
举报
回复
void swap(int **p1,int **p2)
{
int **p = *p1;
*p1 = *p2;
*p2 = *p;
}
——————————调试出错
c_primer_
2006-04-07
打赏
举报
回复
原来已经写了
多谢了!!!
逸学堂
2006-04-07
打赏
举报
回复
简单例子说明。
void swap(int *p1,int *p2)
{
int *p = p1;
p1 = p2;
p2 = p;
}
void swap(int **p1,int **p2)
{
int **p = *p1;
*p1 = *p2;
*p2 = *p;
}
int i = 5,j = 6;
int *p1 = i;
int *p2 = j;
第一个调用
swap(p1,p2); // i,j的值没有互换
第二个调用
swap(&p1,&p2); // i,j的值实现互换
c_primer_
2006-04-07
打赏
举报
回复
能否写个具体例子呢?
jixingzhong
2006-04-07
打赏
举报
回复
例如链表创建:
type *list_create(type *head)
{
type *p=(type *)malloc(sizeof(type));
...
}
这里,如果操作是 *head = *p;
那么结果是可以反馈的,
因为指针是解引用操作的。
但是,
对链表,
需要做的往往有这样的操作: head = p
这里,指针被直接操作,
没有解引用,
操作结果将不能反馈回去 ...
(这里其实就是传值一个道理,只是这个值是个指针而已)
这个时候,
就可以考虑使用多级指针:
type *list_create(type **head)
{
type *p=(type *)malloc(sizeof(type));
...
}
main()
{
type *head;
...
list_create(&head);
...
}
*head = p; //指针解引用操作,可反馈
adintr
2006-04-07
打赏
举报
回复
COM 组件中用得非常之多,当你需要通过参数来返回一个指针的时候就需要指向指针的指针了。
COM 组件的接口返回值一般都是固定的 HRESULT, 其他的返回都通过参数来的。
其中最基本的接口就使用指向指针的指针
HRESULT _stdcall QueryInterface(const IID& riid, void ** ppv)
jixingzhong
2006-04-07
打赏
举报
回复
简单的实际例子:
当函数要操作的是指针本身时候,
这个传递进去的指针其实就是和传值是一个效果,
如果要把在这个函数中的操作反馈到主调函数中的话,
多级指针就有用武之地了 ~
(当然也可以有其他的办法)
c_primer_
2006-04-07
打赏
举报
回复
主要用在什么时候啊
fiftymetre
2006-04-07
打赏
举报
回复
当你能够灵活运用指针的时候,再用另一个指针指向这个指针。
双指针
相关算法
博客介绍了
双指针
的使用场景,如两指针不同步、分别指向头尾时会
用到
。还阐述了
双指针
的类型,包括数组使用
双指针
(以下标为指针),并给出移动数组中 0 的示例;单链表使用
双指针
(以节点为指针),给出找出单向链表倒数第 k 个节点的例题。
算法专题——
双指针
本文主要介绍了一些
用到
双指针
的常见算法题,包括移动0、复写零、快乐数等。详细阐述了各题的解题思路,如移动0使用
双指针
划分区间,快乐数用快慢指针进入循环等,还提及部分题的多种解法及注意事项。
双指针
——移动零
博客围绕LeetCode的移动零题目展开,要求在原地修改数组,将零元素移到右边且不改变非零元素相对位置。介绍了用
双指针
算法解决该问题,利用数组下标表示指针划分区间,还提及快排中也
用到
双指针
算法,最后给出代码实现思路。
蓝桥杯最后十天冲刺 day 2
双指针
的思想
本文介绍
双指针
思想,它是数组或链表中常用算法技巧,可优化暴力解法。常见应用场景有快慢指针、左右指针、滑动窗口。还给出蓝桥杯竞赛中可能
用到
双指针
思想的题目,如两数之和、三数之和等,并阐述解法思路,最后总结
双指针
适用场景及竞赛注意事项。
力扣热题day1【哈希+
双指针
】
博主分享力扣刷题经历,涉及两数之和、字母异位词分组等多道题目。解题
用到
set、
双指针
、unordered_map等数据结构与算法,如两数之和用set查找,盛水最多容器用
双指针
。部分题目起初思路有误或不会做,还强调三数之和去重要点。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章