社区
C语言
帖子详情
双指针究竟什么时候用到?
c_primer_
2006-04-07 01:13:18
谢谢了
...全文
1034
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
打赏
举报
回复
当你能够灵活运用指针的时候,再用另一个指针指向这个指针。
精通C语言指针
指针被誉为C语言的精髓、C本质上是加了一层语法糖的汇编,引进当时先进的函数,保留了汇编强大的地址直接访问功能 —— 指针,使其高效灵活。本课程是黄强老师对于指针的一次专题讲解,相信能给大家带来收获!
双指针
什么时候使用?
在解决ACM竞赛中的问题时,
双指针
是一种常用的技巧,特别适用于数组、字符串等数据结构的处理。4. 三数之和: 对于找到数组中三个数的组合使得它们的和等于目标值的问题,可以使用三个指针(左、右、中间)来处理。3...
算法总结:
双指针
算法(什么时候该使用、如何使用)
算法总结:
双指针
算法的理解和使用思路简介一:从一个C++语言程序开始1.基础解法2.
双指针
解法二:Leetcode实战总结注 简介
双指针
算法指的是在重复遍历对象的过程中,不是在两个循环中使用单个指针进行重复访问,...
【超详细~】
双指针
算法的使用
双指针
算法的使用总结,包括类型、应用场景、以及常见的算法例题
判断链表是否有环,使用
双指针
的解法时,为什么快指针步长必须为2?
在判断链表是否带环时,我们经常会
用到
一种
双指针
的解法非常的简单,快指针步长为2,慢指针步长为1,这样如果有环,它们肯定会在某个时刻相遇。 那么问题来了,是否可以让快指针的步长为3,4,或者n呢?接下来我们...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章