C++二维数组给一维数组赋值

比如我有个数组chara[3][3]={1,2,3,4,5,6,7,8,9};如何把这个数组赋值给数组charb[3];b为{123,456,789}... 比如我有个数组
char a[3][3] = {1,2,3,4,5,6,7,8,9};
如何把这个数组赋值给数组
char b[3];
b为{123,456,789}
展开
 我来答
风若远去何人留
2015-11-18 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450113
专业C/C++软件开发

向TA提问 私信TA
展开全部

二维数组给一维数组赋值有两种情况:

1 按元素,逐个赋值到对应目标元素上。

适用于所有情况,可以自定义规则,遍历二维数组,并赋值到一维数组的对应位置上。由二维数组的行列值计算出一维数组的偏移量,这部分算法可以随意设计,有很高的灵活度。

比如,将二维数组第一列复制出来称为一个单独的一维数组,可以写作:

int a[100][100], b[100];
int i;
//二维数组赋值操作可以写在这里,与主题无关,代码从略。
for(i = 0; i < 100; i ++)
    b[i] = a[i][0];//第一列即0列,C语言下标从0开始。

2 整体复制。

二维数组中的元素本身是连续存储的,如果要将二维数组连续的一组数据赋值给一维数组,可以直接调用memcpy函数。该函数声明在cstring中,形式为

void* memcpy(void *dst, void *src, size_t length);

功能为将src地址上,长度为length字节的数据,复制到dst地址上。

比如将第二三两行(这两行是连续的),复制到一维数组中,代码可以写作:

int a[100][100],b[200];
//赋值,从略。
memcpy(b,a[1],sizeof(b));//整体复制。
rssg888
2014-02-13 · TA获得超过1032个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:365万
展开全部
char b[3]; b的元素是char,456和789对于char类型的整数来说是溢出的
b是int类型的数组才行
int b[3];
int i;
for(i=0;i<3;i++)
b[i]=100*a[i][0]+10*a[i][1]+a[i][2];

这样b就是{123,456,789}了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongxianwei818
2014-02-13 · 超过14用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:33.8万
展开全部
char类型的字符数组,存放整型数字,这个整型数字实际上是某个字符的ASCII码,比如41--A,42---B等。但是如果超过了ASCII中能够显示的字符范围,就会显示乱码。
建议将char b[3];修改为char *b[3]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
护戒之淼
2014-02-13 · TA获得超过132个赞
知道小有建树答主
回答量:396
采纳率:0%
帮助的人:242万
展开全部
char b[3];
char a[3][3] = {1,2,3,4,5,6,7,8,9};
char temp[3];
for( int i = 0; i < 3; i ++)
{
for( int j =0; j< 3; j ++)
{
temp[j] = a[i][j];

}

b[i] = temp;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式