怎样把一个数组的值赋给另一个数组?

wuhulove99 2010-08-18 04:30:24
定义了以下变量:在不同情况下怎样把tab、tab1、tab2、tab3的值赋给Temp?
unsigned char tab[]={0xff,0xff,0xff,0xff};
unsigned char tab1[]={0x00,0x00,0x00,0x00};
unsigned char tab2[]={0xaa,0xaa,0xaa,0xaa};
unsigned char tab3[]={0x00,0x00,0xff,0xff};
unsigned char Temp;
这样写总是编译不通过,为什么?
switch(Write_C)
{
case 0x00:Temp=tab1;break;
case 0x01:Temp=tab3;break;
case 0x02:Temp=tab2;);break;
default:Temp=tab;break;
}
...全文
1521 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkb 2010-08-27
  • 打赏
  • 举报
回复
多看看C语言吧
shell_deng 2010-08-25
  • 打赏
  • 举报
回复
unsigned char tab0[] =
{
0xff,0xff,0xff,0xff
};
unsigned char tab1[] =
{
0x00,0x00,0x00,0x00
};
unsigned char tab2[] =
{
0xaa,0xaa,0xaa,0xaa
};
unsigned char tab3[] =
{
0x00,0x00,0xff,0xff
};

unsigned char *Temp;//or you can define temp[4],and use function "memcpy()" to copy datas

switch(Write_C)
{
case 0x00 :
{
Temp=tab1;
}break;
case 0x01 :
{
Temp=tab3;
}break;
case 0x02 :
{
Temp=tab2;);
}break;
default:
{
Temp=tab;
}break;
}
shell_deng 2010-08-25
  • 打赏
  • 举报
回复

unsigned char tab0[] =
{
0xff,0xff,0xff,0xff
};
unsigned char tab1[] =
{
0x00,0x00,0x00,0x00
};
unsigned char tab2[] =
{
0xaa,0xaa,0xaa,0xaa
};
unsigned char tab3[] =
{
0x00,0x00,0xff,0xff
};

unsigned char *Temp;//or you can define temp[4],and use function "memcpy()" to copy datas

switch(Write_C)
{
case 0x00 :
{
Temp=tab1;
}break;
case 0x01 :
{
Temp=tab3;
}break;
case 0x02 :
{
Temp=tab2;);
}break;
default:
{
Temp=tab;
}break;
}
shell_deng 2010-08-25
  • 打赏
  • 举报
回复
帅哥
你的程序写得超级的不规范
lbing7 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kingmax54212008 的回复:]

嗯,C51是没有memcpy的。MFC里面有。
这种情况下只能一个一个复制过去了。
[/Quote]

谁说没有?

memcpy是属于C标准库的,不属于某一个开发方向

不管什么平台,没有这些个标准库,就不能算是一个完成的C平台
codesnail 2010-08-24
  • 打赏
  • 举报
回复
学c语言,学什么是数组,什么是循环。。。。
newstime 2010-08-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tietao 的回复:]
C/C++ code

unsigned char tab[]={0xff,0xff,0xff,0xff};
unsigned char tab1[]={0x00,0x00,0x00,0x00};
unsigned char tab2[]={0xaa,0xaa,0xaa,0xaa};
unsigned char tab3[]={0x00,0x00,0xff,0xff};
unsigne……
[/Quote]顶一个啊
kingmax54212008 2010-08-22
  • 打赏
  • 举报
回复
嗯,C51是没有memcpy的。MFC里面有。
这种情况下只能一个一个复制过去了。
Great_Bug 2010-08-21
  • 打赏
  • 举报
回复
如果不用memcpy,就一个一个元素复制.
switch(Write_C)
{
case 0x00:for (i=0;i<4;i++) Temp[i]=tab1[i];break;
...................
}
stgok168 2010-08-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 great_bug 的回复:]
如果不用memcpy,就一个一个元素复制.
switch(Write_C)
{
case 0x00:for (i=0;i<4;i++) Temp[i]=tab1[i];break;
...................
}
[/Quote]

还是用这个,理解上会比较简单
schlafenhamster 2010-08-21
  • 打赏
  • 举报
回复
unsigned char *Temp;
case 0:
Temp=tab1;
break;
tietao 2010-08-18
  • 打赏
  • 举报
回复

unsigned char tab[]={0xff,0xff,0xff,0xff};
unsigned char tab1[]={0x00,0x00,0x00,0x00};
unsigned char tab2[]={0xaa,0xaa,0xaa,0xaa};
unsigned char tab3[]={0x00,0x00,0xff,0xff};
unsigned char Temp;

unsigned char Temp
数组不能直接赋给一个字符变量的,
如果用的话,应该给为unsigned char* Temp;
如果还用数组的话,
因为数组名是右值,
不能出现在等号左边,
所以你只能用循环,
把它们一个个,
复制过去。。
不过建议你用指针操作,
这样既可以提升自己的编程能力,
还可使自己的程序质量更高。
不过,
前提得好好学指针。
祝你成功!!
wuhulove99 2010-08-18
  • 打赏
  • 举报
回复
什么是memcpy啊,我只会用c51编点单片机程序

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧