Because the syntax says it is not allowed? There are two parts to the problem:
You can't use the initializer syntax except in an initializer or (in C99) in a compound literal.
You can't assign whole arrays.
In C99, you could pass an array to a function:
typedef unsigned int cell;
extern void some_func(cell data[]);
extern void func(void);
void func(void)
{
cell playerid = 0;
some_func((cell[]){4*sizeof(cell),playerid,0,sizeof(cell),2*sizeof(cell)});
}
(Your question is unclear on cell vs ucell; I chose to use cell throughout.)
You still can't do array assignment. If the array is wrapped in a structure, you can do the structure assignment which, coincidentally, assigns the contained array. But that is a structure assignment, not an array assignment.