今天在實現二維數組的復制功能時,竟然出現了好多問題,還是太不小心了。
我們知道,平時進行矩陣復制,無非是二重循環進行賦值操作,所以今天想改用利用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"); } }