在线程内使用全局数组

时间:2013-07-18 11:41:14

标签: c++ c multithreading

我想要的是,  如果线程内的数组buff中的数据发生更改,则全局变量global_buff数据也必须更改

#include <process.h>
.........

char global_buff_1[50];
char global_buff_2[50];

void thread (int x)
{
   char buff[50] = {0};
   if (x == 0)
      buff = global_buff_1;      //this is what i need, how can i equal two array correctly. i want to if buff array data changing the global_buff also changing.
   else
      buff = global_buff_2;
    .............
    //do some thing 
    .............
}

int main(int argc, char* argv [])
{
...................
int y = 0;
_beginthread((void(*)(void*))thread, 0, (void*)y);
.....................
}

任何帮助!

2 个答案:

答案 0 :(得分:1)

void thread (int x)
{
   char* buff = 0; // change here to a pointer 
   if (x == 0)
      buff = global_buff_1; // new these assignments work. And when changing buff
   else                     // global_buff_1 and global_buff_2 will change depending on
      buff = global_buff_2; // the assignment done here
    .............
    //do some thing 
    .............
}

答案 1 :(得分:0)

你想,

  • global_buff_1[]分配给buff[]
  • buff[]
  • 中反映对global_buff_1[]数组的更改

buff也是char数组,array name can act as pointers也是global_buff_1数组。 char也是global_buff_1数组。 因此,您不能简单地将数组分配给另一个数组,因为它们是地址。如果您需要将值从buff复制到strcpy(buff,global_buff_1); ,则需要执行类似的操作,

char * buff;
buff = global_buff_1;

但是这将创建两个单独的数组,具有相同的值,并且不能满足您的第二个要求。

你可以在这里使用指针,

{{1}}

但是你仍然可以通过两个名称访问一个数组。