C语言中给数组赋值的问题

我的代码结构如下:
uchar t[4];
if (某条件){
t[0] = 5; t[1] = 2; t[2]=21;t[3]=4;

}
else{
t[0] = 11; t[1] = 32; t[2]=122;t[3]=47;

}
大概是这意思。
我想问的是有没有办法直接用 t = {5,2,21,4} 这种形式赋值?
(实际上我的判断还很多层,需要根据条件给t赋值几十种,写起来太麻烦了。)

不行。类似int t[]={5,2,21,4}的语句是编译器语句,编译完了这语句就没有了,有的只是为t分配好的空间和空间中的数据(就是右边{}中的数所),运行时这些数据就是t的初值。要想中途变更,只能一项一项解决。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-21
t = {5,2,21,4} 是在定义的时候使用的初始化方法,定义之后就不可以使用这种方法了,可以使用循环对数组中的每个元素进行初始化,或者理解的深一点的话可以直接对内存进行操作,顺便说一下,数组在内存中时连续存放的,知道吧
第2个回答  2014-02-21

可以建2个数组

uchar a[4]={5,2,21,4};
uchar b[4]={11,32,122,47};
uchar t[40];
if(条件)
    memcpy(t,a,4); //把a复制到t上
else
    memcpy(t,b,4); //把b复制到t上

另如果t和ab长度一样,就可以直接用uchar *t=a;指向了

本回答被提问者采纳
第3个回答  2014-02-21
数组的赋值只能一个个的,要么就是在定义上的时候初始化