-3

我想要的是,如果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);
.....................
}

任何帮助!

4

2 回答 2

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 
    .............
}
于 2013-07-18T12:08:47.837 回答
0

你想要,

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

buff是一个char数组,数组名也可以作为指针global_buff_1也是一个char数组。所以你不能简单地将一个数组分配给另一个数组,因为它们是地址。如果您需要将值从复制global_buff_1buff您需要执行类似的操作,

strcpy(buff,global_buff_1);

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

您可以在这里使用指针,

char * buff;
buff = global_buff_1;

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

于 2013-07-18T11:55:21.830 回答