【问题标题】:get a number of elements in 2d array, in shape of (*array)[column]获取二维数组中的多个元素,形状为 (*array)[column]
【发布时间】:2021-12-15 11:35:07
【问题描述】:

我在主函数中声明了一个二维数组,我想在另一个函数中获取元素的数量。

假设我的主要是这样的。

#define col 100
#define row 10

int main(){
   array[row][col] = {"abc1", "abc2", "abc3"};
   int len = get2DLen(array);
}

我以这种形式复制了这个数组 (*array)[column]

int get2DLen(char (*array)[col]){
   int len;
   //some operations..
   return len;
}

问题是……

如何在 func 中获取 col?在这种情况下,10.

如何获取数组中实际元素的数量?在这种情况下,3.

我知道数组在这里意味着 *array[0]。

我尝试迭代所有元素并检查它是否像普通的 char 数组字符串一样是 '\0'。但这绝对是错误的..因为它无论如何都被初始化了..

所以任何帮助将不胜感激

【问题讨论】:

  • C 和 C++ 是非常不同的语言。除非您询问它们的差异,否则请不要同时标记两者。
  • 好吧.. 抱歉。我会编辑它
  • C 不会自动为您执行此操作。为此,请手动执行:将数组维度作为参数传递给例程:int get2DLen(size_t row, size_t col, char (*array)[col])。 (size_t<stddef.h> 中声明。)

标签: arrays c pointers


【解决方案1】:

在 C 中,无法确定数组的大小。因此,您无法在函数中获取col。您需要将数组的维度传递给函数参数。

#include <stdio.h>
#include <stddef.h>
#define col 100
#define row 10

int get2DLen(char (*array)[], size_t arr_row, size_t arr_col)
{
    int len = arr_col;
    return len;
}

int main()
{
    char array[row][col] = {"abc1", "abc2", "abc3"};
    int len = get2DLen(array, 3, 4);
    printf("%d", len);
}

【讨论】:

  • 我制作了一个由包含二维数组的节点组成的树。对于树相关的函数,我不能传递每个节点的数组大小。这就是为什么我需要在函数中计算大小。但事实证明没有这样的操作。也许我应该在节点中添加数组的大小。无论如何感谢您的输入。
猜你喜欢
  • 2011-01-03
  • 2015-10-10
  • 2016-09-25
  • 2012-07-04
  • 1970-01-01
  • 2020-02-16
  • 2021-11-13
  • 1970-01-01
  • 2021-11-05
相关资源
最近更新 更多