社区
C++ 语言
帖子详情
foo(TYPE** p)函数参数用双重指针的问题。。。能提意见者进!
hawkxjy
2003-12-24 11:22:57
1,函数参数是**P(双重指针)时的作用是什么?在功能效果上同参数是*p(单指针)的有什么不同?
2,还有就是何时使用**p好,何时使用*p好呐?
3,双指针在com中用的很多,其中的QueryInterface(...,void** p)接口函数始终保持有个双指针参数,请高手解释一下这样用与用*p做参数的区别,谢谢。
...全文
162
11
打赏
收藏
foo(TYPE** p)函数参数用双重指针的问题。。。能提意见者进!
1,函数参数是**P(双重指针)时的作用是什么?在功能效果上同参数是*p(单指针)的有什么不同? 2,还有就是何时使用**p好,何时使用*p好呐? 3,双指针在com中用的很多,其中的QueryInterface(...,void** p)接口函数始终保持有个双指针参数,请高手解释一下这样用与用*p做参数的区别,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hawkxjy
2003-12-25
打赏
举报
回复
有学过com的嘛?讲一下第三个问题,这样更实际一点
langzi8818
2003-12-24
打赏
举报
回复
void swap(int*p1,int*p2)
{
int *c;
c=p1;
p1=p2;
p2=p1;
}
void main()
{
int a=5,b=6;
int*p1=&a,p2=&b;
swap(p1,p2);
}
这样交换了p1和p2的值吗?
liquanle
2003-12-24
打赏
举报
回复
因为你需要按址传送的时候就是双指针,否则,你用单指针,是按值传递。
langzi8818
2003-12-24
打赏
举报
回复
先吃饭,回来再说!
victor_cui
2003-12-24
打赏
举报
回复
双指针多用于指针交换,可以避免数据复制,提升系统的性能,同时还可以让函数修改指针,例如扩充其大小,指向等
zxm954712
2003-12-24
打赏
举报
回复
If you want to change the value the pointer points, you should use double pointer.
for example;
{char *str ;
char caTemp[20] = "abc";
str = caTemp;
foo(&str);
printf("str is %s", str);
}
void foo(char **p);
{
char *s = "def";
*p = s;
}
DisplayWorld
2003-12-24
打赏
举报
回复
我认为更能说明双重指针(指向指针的指针)作用的不是上面各位的用法(那只是一般性使用,不能说明问题).
看看下例:
void sample_alloc_safe_str_1(char **lppsz, unsigned int len)
{
* lppsz = new char[ len + 1 ];
}
void main()
{
char * lpsz = NULL;
sample_alloc_safe_str_1(&lpsz, 100);
Assert(lpsz != NULL); // no assert
...
}
/////////////////////////////////////////////////////////////
void sample_alloc_safe_str_2(char *lpsz, unsigned int len)
{
lpsz = new char[ len + 1 ];
}
void main()
{
char * lpsz = NULL;
sample_alloc_safe_str_2(&lpsz, 100);
Assert(lpsz != NULL); // assert!
...
}
hawkxjy
2003-12-24
打赏
举报
回复
上面几个帅哥顺便把第三个问题给解释一下子。
关于com发表一下点点观点
hongyongzeng
2003-12-24
打赏
举报
回复
不好意思,没看到你已经是五颗星了,班门弄斧
hongyongzeng
2003-12-24
打赏
举报
回复
没有交换,因为swap中的p1、p2在函数调用后就消失了,而swap又没有返回任何数据,对*p1,*p2中的数据又没发改变。
void swap(int *p1,int *p2)
{
int c;
c=*p1;
*p1=*p2;
*p2=c;
}
就OK了
iceheart
2003-12-24
打赏
举报
回复
当你需要这个功能的时候,自然就会想到它了
《C++ Concurrencyin Action》第5章--C++内存模型和原子类型操作
本章主要内容C++11标准中,有一个十分重要特性,常被程序员们所忽略。它不是一个新的语法特性,也不是新的工具,它就是新的多线程(感知)内存模型。内存模型没有明确的定义基本部件应该如何工作的话,之前介绍的那些工具就无法正常工作。那为什么大多数程序员都没有注意到它呢?当你使用互斥量保护你的数据和条件变量,或者是“期望”上的信号事件时,对于互斥量为什么能起到这样作用,大多数人不会去关心。只有当你试图去“接触硬件”,你才能详尽的了解到内存模型是如何起作用的。C++是一个系统级别的编程语言,标准委员会的目标之一就是不
C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚
指针
。虚表是和类对应的,虚表
指针
是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包括至少一个纯虚函数的...
c/c++笔试题
微软亚洲技术中心的面试题!!! 1.
进
程和线程的差别。 线程是指
进
程内的一个执行单元,也是
进
程内的可调度实体. 与
进
程的区别: (1)调度:线程作为调度和分配的基本单位,
进
程作为拥有资源的基本单位 (2)并发性:不仅
进
程之间可以并发执行,同一个
进
程的多个线程之间也可并发执行 (3)拥有资源:
进
程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于
进
程的资源. (4)系统
C语言面试题汇编
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2.如何引用一个已经定义过的全局变量?
C/C++笔试题(很多)
微软亚洲技术中心的面试题!!! 1.
进
程和线程的差别。 线程是指
进
程内的一个执行单元,也是
进
程内的可调度实体. 与
进
程的区别: (1)调度:线程作为调度和分配的基本单位,
进
程作为拥有资源的基本单位 (2)并发性:不仅
进
程之间可以并发执行,同一个
进
程的多个线程之间也可并发执行 (3)拥有资源:
进
程是拥有资源的独立单位,线程不拥有系统资源,但可以访问隶属于
进
程的资源. (4
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章