您的位置:首页 > 编程语言 > C语言/C++

C语言 一维数组叠加为二维数组样例

2016-02-26 09:41 344 查看
这里参看memcpy的用法,将一个一维整型数组不停的叠加为二维数组

使用宏定义来控制二维数组的行列

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_RANK    15
#define MAX_COLUMN  7

int main(int argc, char *argv[])
{
int arr1D[7]  = {1,2,3,4,5,6,7};
int arr2D[MAX_RANK][MAX_COLUMN];
int i,j;

//一维维整型数组叠加转换为二维整型数组
for(i=0;i<MAX_RANK;i++)
{
//重要,1:目的地址  2:源地址 3:复制字节数
memcpy(arr2D[i],&arr1D,7*sizeof(int));

}
//二维整型数组打印显示
for(i=0;i<MAX_RANK;i++)
{
for(j=0;j<MAX_COLUMN;j++)
{
printf("%d  ", arr2D[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}


重要的是体会memcpy三个参数的用法,之后就好做了

将代码改进,for循环改为while循环,使代码符合Linux下多线程的操作,当数据填充满二维数组后将交换执行权:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_RANK    15
#define MAX_COLUMN  7

int main(int argc, char *argv[])
{
int arr1D[7]  = {1,2,3,4,5,6,7};
int arr2D[MAX_RANK][MAX_COLUMN];

int countRank=0;
//一维维整型数组叠加转换为二维整型数组
//for(countRank=0;countRank<MAX_RANK;countRank++)
//{
while(true)
{

memcpy(arr2D[countRank],&arr1D,7*sizeof(int));//重要,1:目的地址  2:源地址 3:复制字节数
countRank++; //顺序保证从0~MAX_RANK-1
if(countRank % MAX_RANK ==0) //注意优先级问题
{
break;  //交还执行权
}
}
//}

int i,j;
//二维整型数组打印显示
for(i=0;i<MAX_RANK;i++)
{
for(j=0;j<MAX_COLUMN;j++)
{
printf("%d  ", arr2D[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: