c - 将 2D 数组切片从 3D 数组传递给函数

标签 c arrays

我正在尝试传递3种类型的切片:

enter image description here

在主函数中:

winner = check_for_winner_slice(&arr3D[Z][0][0], X, Y) || check_for_winner_slice(arr3D[0][X][0], Z, Y) || check_for_winner_slice(arr3D[0][0][Y], Z, X);

功能:

int check_for_winner_slice(char arr2D[N][N], int row, int col);

但我在这样做时遇到了麻烦:预期为 'char (*)[4]' 但参数的类型为 'char *'

最佳答案

假设arr3D已被声明为类似

char arr3D[M][N][N];

那么表达式 arr3D[i] 将具有 char [N][N] 类型,在大多数情况下会“衰减”为 类型的表达式>char (*)[N]

所以您需要做的就是将函数调用更改为

winner=check_for_winner_slice(arr3D[Z], X, Y);

编辑

沿其他两个维度进行切片将需要您创建一个临时的二维数组:

char temp[N][N];

for ( size_t i = 0; i < N; i++ )
  for ( size_t j = 0; j < N; j++ )
    temp[i][j] = arr3D[i][X][j];

winner = check_for_winner_slice( temp, Z, Y );

for ( size_t i = 0; i < N; i++ )
  for ( size_t j = 0; j < N; j++ )
    temp[i][j] = arr3D[i][j][Y];

winner = check_for_winner_slice( temp, Z, X );

关于c - 将 2D 数组切片从 3D 数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958598/

相关文章:

arrays - Rust-如何初始化包含HashSet字段的结构数组?

c - 尝试从二维数组中的字符串中获取字符时出现段错误

c - 传递给函数的 const 指针是否复制地址并在函数范围内创建新指针?

c - 如何获取 Gtk2 GtkDrawingArea 的 XID 来嵌入 Mplayer

php - 计算多维数组中的值

c++ - 如何将 int* -或- float* 分配给 void* 并稍后使用结果?

php - 如何仅在一个数组中从数据库返回值

c - time() 和 gettimeofday() 之间的区别以及为什么会导致段错误

c - OpenGL 3+ 渲染凹多边形(无 GLU)

c - 如果 C99 解除了 "variable declaration at top of block"约束,为什么在显示错误的 "for loop"中这样做?