我想要的是,
如果线程内的数组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);
.....................
}
任何帮助!
答案 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}}
但是你仍然可以通过两个名称访问一个数组。