当前位置: 技术问答>linux和unix
ShowMan专家请进,继续刚才的问题
来源: 互联网 发布时间:2016-06-22
本文导语: 我原来要传递的参数是引用,(直接交换全局链表节点,我觉得用引用最方便了)现在用一个结构体传过去,我是彻底糊涂了,你帮忙分析分析,我对引用和指针一直有恐惧,特别是指针,不敢用。 | ...
我原来要传递的参数是引用,(直接交换全局链表节点,我觉得用引用最方便了)现在用一个结构体传过去,我是彻底糊涂了,你帮忙分析分析,我对引用和指针一直有恐惧,特别是指针,不敢用。
|
Twolink datalk;
Twolink nulllk;
这两个换成
Twolink* datalk;
Twolink* nulllk;
Twolink nulllink(LINKLEN);
Twolink datalink(0);
这个twolink 到底是什么玩意,这样声明没问题吧。
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。