【问题标题】:Is it possible to copy from int** to another int** but not element by element?是否可以从 int** 复制到另一个 int** 但不能逐个元素地复制?
【发布时间】:2013-07-03 01:05:18
【问题描述】:

我有一个 n x n 矩阵存储在 int** matrix1 中。 我有另一个 int** matrix2,尺寸为 m x m,m > n。 我想复制第二个矩阵左上角的第一个矩阵,并将缺失的位置从 n+1 填充到 m。 除了逐个元素复制之外,还有其他方法吗?

【问题讨论】:

    标签: c dynamic matrix copy


    【解决方案1】:

    你可以使用

    for (int i = 0; i < n; ++i)
    {
      memcpy ( matrix2[i], matrix1[i], n*sizeof(int));
    }
    

    然后填写缺失的位置

    【讨论】:

      【解决方案2】:
      matrix1 = (int**)malloc(sizeof(int*)*n);
      matrix2 = (int**)malloc(sizeof(int*)*m);
      
      for (int i = 0; i < n; ++i)
      {
        matrix1[i] = (int*)malloc(sizeof(int*)*n);
      }
      for (int i = 0; i < m; ++i)
      {
        matrix2[i] = (int*)malloc(sizeof(int*)*m);
      }
      
      // assigning some random values
      for (int i = 0; i < n; ++i)
      {
          for (int j = 0; j < n; ++j)
          {
              matrix1[i][j] = j;
          }
      }
      
      // copying elements using memcpy
      for (int i = 0; i < n; ++i)
      {
        memcpy ( matrix2[i], matrix1[i], n*sizeof(int));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        • 2013-01-21
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 2021-04-04
        • 1970-01-01
        相关资源
        最近更新 更多