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

这里参看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;
}

 

转载于:https://www.cnblogs.com/shuqingstudy/p/5219318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值