二维数组应该怎么赋值

如题所述

两种方式:
一 使用for循环
如 int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i<y; i++)
{
for(int j=0; j<x; j++)
{
DestArray[i][j] = SrcArray[i][j];
}
}

二 使用内存操作函数来提高效率
二维数组初始化,将DestArray全部置为零
int DestArray[y][x];
for(int i=0; i<y; i++)
{
memset(DestArray[i], 0, sizeof(int)*x);
}
这种方法效率更高。
还有将memset改为 memcpy 复制已有的数组。
int DestArray[y][x];//目的数组
int SrcArray[y][x];//源数组
for(int i=0; i<y; i++)
{
memcpy(DestArray, SrcArray, sizeof(int)*x);
}

以上两个例子都是考虑了二维数组时动态生成时的情况
因为内存不连续,需要用for循环来对每个块的内存赋值

假如是程序源码中已定义大小且连续的内存,可以不需要for循环直接调用这两个函数,例如:
int DestArray[100][100];
int SrcArray[100][100];
memcpy(DestArray, SrcArray, sizeof(int)*100*100);
memset(DestArray, 0, sizeof(int)*100*100);
温馨提示:答案为网友推荐,仅供参考
相似回答