VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 537|回复: 3

如何传递参数???

[复制链接]
44_avatar_middle
最佳答案
0 
online_vip 发表于 2019-7-25 17:06:53 | 显示全部楼层 |阅读模式
30驿站币
  1. #include "stdafx.h"
  2. #include "windows.h"

  3. DWORD WINAPI ThreadProc(LPVOID lpParameter)
  4. {
  5.         xxx1 = (xxx2)lpParameter;   //xxx1,xxx2 怎么写?

  6.         //这里需要打印出来"1", "2", "3", "40", "5", "6", "789",,要怎么写?

  7.        
  8.         return 0;
  9. }


  10. int _tmain(int argc, _TCHAR* argv[])
  11. {
  12.         char *psz[] = {"1", "2", "3", "40", "5", "6", "789"};

  13.         HANDLE hThread = CreateThread(NULL, 0, ThreadProc, psz, 0, NULL); //第四个参数为传递给线程函数的参数,是不是直接写psz???
  14.         return 0;
  15. }
复制代码



不知道怎么写,才能传递过去,在线程函数里面打印出来。。。求助啊

最佳答案

查看完整内容

不要把栈内存传到外面去。 解决方案一,使用vector: 解决方案二(使用char*数组),太麻烦了,省略。




上一篇:VC 如何不比较年月日,只比较时分秒,谢谢
下一篇:我设置了开机启动,但文件完全找不到,求解,谢谢
20_avatar_middle
最佳答案
0 
online_vip 发表于 2019-7-25 17:06:54 | 显示全部楼层
不要把栈内存传到外面去。

解决方案一,使用vector:

  1. #include <string>
  2. #include <vector>
  3. typedef std::vector<std::string> StringVector;


  4. DWORD WINAPI ThreadProc(LPVOID lpParameter)
  5. {
  6.         StringVector *param = (StringVector*)(lpParameter);
  7.         for (StringVector::const_iterator iter = param->begin(); iter != param->end(); ++iter)
  8.         {
  9.                 // 打印iter
  10.         }

  11.         delete param;
  12.         return 0;
  13. }


  14. int _tmain(int argc, _TCHAR* argv[])
  15. {
  16.         StringVector *param = new StringVector;
  17.         param->push_back("1");
  18.         param->push_back("2");
  19.         // ... 添加更多参数

  20.         HANDLE hThread = CreateThread(NULL, 0, ThreadProc, param, 0, NULL);
  21.         ::CloseHandle(hThread);

  22.         return 0;
  23. }
复制代码


解决方案二(使用char*数组),太麻烦了,省略。

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
44_avatar_small hahacker + 2 + 2 很给力!

查看全部评分

51_avatar_middle
最佳答案
82 
online_admins 发表于 2019-7-26 23:06:05 | 显示全部楼层
楼主跟我学了这么多年了,咋这种问题还没搞定呢?
psz 既然是局部变量,所以肯定不能当线程参数传递了,如果是的话,就用 new 从堆中申请内存,这样就可以了
44_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-8-15 10:44:58 | 显示全部楼层
Syc 发表于 2019-7-26 23:06
楼主跟我学了这么多年了,咋这种问题还没搞定呢?
psz 既然是局部变量,所以肯定不能当线程参数传递了,如 ...

我已经好几年没写过C++了,所以我打算再从头学起。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-25 15:16

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表