在C中传递2D char数组

时间:2018-09-17 20:53:51

标签: c arrays pointers parameters 2d

警告显示指针转换不兼容,第4行“预期的char **但参数的类型为char * [2]”中也有一条注释。

但是为什么请帮助和解释。通过动态内存分配可以解决这个问题吗?

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
char** cavityMap(int grid_count, char **grid) {
  int i, j, max = 0;
  char y = 'X';
  if (grid_count == 1) {
    return grid;
  } else {
    for (i = 0; i < grid_count; i++)
      for (j = 0; j < grid_count; j++) {
        if (max < (int) grid[i][j]) {
          max = grid[i][j];
        }
      }
    for (i = 0; i < grid_count; i++)
      for (j = 0; j < grid_count; j++) {
        if (i != 0 && i != grid_count - 1 && j != 0 && j != grid_count - 1) {
          if (grid[i][j] == (char) max)
            grid[i][j] = y;
        }

      }

    return grid;
  }
  return 0;
}

int main() {
  int n = 2, i, j;
  char **result;
  char s[2][2];
  s[0][0] = '1';
  s[0][1] = '7';
  s[1][0] = '6';
  s[1][1] = '8';
  result = cavityMap(n, s);
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      printf("%c", result[i][j]);
    }
    printf("\n");
  }
  return 0;
}

1 个答案:

答案 0 :(得分:3)

正如其他人所说,char a[][]char a[n][n]

不同

但是,如果您有n,则可以将其作为参数发送给函数 只要您还告诉函数#include <stdio.h> void process_array(int n, char a[n][n]) { for (int i=0; i < n; i++) { for (int j=0; j < n; j++) printf("%c", a[i][j]); } } int main() { char a[2][2] = {{'h', 'o'}, {'l', 'a'}}; process_array(2, a); printf("\n"); } 是什么。像这样

void
process_array(int n, int m, char a[n][m])

哦,顺便说一句,如果您的数组不是正方形,那么您应该可以做到

void
process_array(char a[2][2])

这里的要点是,当在现代c语言中将数组声明为函数参数时,数组维不必是这样的常量:

sizeof(a)

请记住,数组始终作为指针传递给函数参数,因此在process_array中执行 function copyUsingJquery(element_id) { $(element_id).attr("contenteditable", true) .select() .on("focus", function () { document.execCommand('selectAll', false, null) }) .focus(); document.execCommand("Copy"); $(element_id).removeAttr("contenteditable"); setTimeout(function () { //deslect text on page after a few seconds //$(element_id).trigger("blur"); window.getSelection().removeAllRanges(); }, 3000); } 会返回指针的大小