当前位置:  技术问答>linux和unix

ShowMan专家请进,继续刚才的问题

    来源: 互联网  发布时间:2016-06-22

    本文导语:  我原来要传递的参数是引用,(直接交换全局链表节点,我觉得用引用最方便了)现在用一个结构体传过去,我是彻底糊涂了,你帮忙分析分析,我对引用和指针一直有恐惧,特别是指针,不敢用。 | ...

我原来要传递的参数是引用,(直接交换全局链表节点,我觉得用引用最方便了)现在用一个结构体传过去,我是彻底糊涂了,你帮忙分析分析,我对引用和指针一直有恐惧,特别是指针,不敢用。

|
Twolink datalk; 
Twolink nulllk; 

这两个换成 
Twolink* datalk; 
Twolink* nulllk; 


Twolink nulllink(LINKLEN); 
Twolink datalink(0); 

这个twolink 到底是什么玩意,这样声明没问题吧。

|

你在一楼的代码基本思路是对的

在楼主的这段代码中,就象你这样使用完全是可以的
首先pthread_create的
第三个参数是新线程要执行的函数//void *(*start_routine)(void *),
第四个参数就是要传递给已创建线程的参数//void *arg

你设计的函数senddata原来的原型为: 
void *senddata(Twolink &, Twolink &, int len); 

首先这个类型和参数三的类型不是一个类型,你这样去定义本身就是不正确的
其次引用与指针是不同的,但是他们又有相似之处,在你的case中,是用不到引用的,也不需要用
用指针反而更灵活

现在你的函数senddata为:
void *senddata(void *p)
参数为一个指针,所以当create中第四个参数传递p(你new出来的)时
线程函数运行时,p就作为参数进入线程函数senddata了
再用类型强制转换 datastruct *p_data =(datastruct *)p; 
这是完全正确的!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3