首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵的重复末元

矩阵的重复末元
EN

Stack Overflow用户
提问于 2017-08-26 20:46:11
回答 1查看 44关注 0票数 0

在我当前的C代码中(请参阅更新),我有一个函数接收这两个参数:

代码语言:javascript
复制
char** matrix, int max

max是存储在矩阵中的字符串数量。如果max是奇数,我需要增量最大值1,然后重复矩阵的最后一个元素。

我需要帮助,如何才能复制这个矩阵的最后一个元素。根据我找到的文档,我对解决这个问题的第一个想法,realloc,接受参数void *ptr, size_t size,其中第一个元素是一个一维数组?

我该如何处理这个二维矩阵?

更新

代码语言:javascript
复制
char* function(char** matrix, int max) {
  if(max % 2 != 0) {
    max = max + 1;
    printf("%lu", sizeof(matrix[0]));
    matrix = realloc(matrix, sizeof(matrix[0]));
  }
  if(max == 2) {
    ...
    char* ret = malloc(BLOCK_SIZE);
    strncpy(ret, buf2, BLOCK_SIZE-1);
    return(ret);
  }
  char* submatrix[max/2];

  for(int x=0; x<max; x=x+2) {
    ...
    submatrix[x/2] = buf2;
  }
}

更新2

代码语言:javascript
复制
  if(max % 2 != 0) {
    max = max + 1;
    char* tmp[max];
    for(int x=0; x<max-1; x++)
      tmp[x] = matrix[x];
    tmp[max-1] = matrix[max-2];
  }
EN

回答 1

Stack Overflow用户

发布于 2017-08-26 21:36:48

printf("%lu", sizeof(matrix[0])); --这将打印char *的大小

matrix = realloc(matrix, sizeof(matrix[0]));将根据系统只分配char *字节的大小-4或8。

sizeof != strlen和sizeof不是函数--它是在完全过程中评估的。

我建议-你应该先开始学习指针(从你的代码中你根本不理解它们),然后转到更复杂的东西上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45899539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档