今天在实现二维数组的复制功能时,竟然出现了好多问题,还是太不小心了。
我们知道,平时进行矩阵复制,无非是二重循环进行赋值操作,所以今天想改用利用memcpy进行复制操作,当然一维数组的复制在上一篇文章已经练习过了
需要注意的问题是:
复制的本质是利用:行+变量字节数*列 这种表达,所以目标数组的行数一定是固定的
刚开始想到项目中行数是未知的,默认为空,结果程序逻辑问题,不停的溢出,所以要小心
#include <stdio.h> void print(int *data,size_t m,size_t n); //二维数组显示子函数 int main(void) { int src[][3]={{1,2,3},{4,5,6},{7,8,9},{1,2,3},{4,5,6},{7,8,9}}; int des[6][3]={0,0};//要小心,行数固定 printf("%d",sizeof(src)); print(src,6,3); memcpy(des,src,sizeof(src)); print(des,6,3); return 1; } //二维子函数显示功能 void print(int data[][3], size_t m,size_t n) { int i,j; printf("\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%d ",data[i][j]); } printf("\n"); } }