C語言 memcpy二維數組的復制


今天在實現二維數組的復制功能時,竟然出現了好多問題,還是太不小心了。

我們知道,平時進行矩陣復制,無非是二重循環進行賦值操作,所以今天想改用利用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");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM