使用指针在C中查找2D数组的尺寸

我在C中创建一个2D数组,如下所示:

int **arr; arr = malloc(rows * sizeof(int *)); for (i = 0; i < rows; i++) arr[i] = malloc(cols * sizeof(int)); 

现在,我打电话给:

 func(arr) 

在函数func ,如何计算行和列尺寸?

你无法计算它 – arr只是一个指向指针的指针,没有更多与之相关的信息(与所有C数组一样)。 您必须将维度作为单独的参数传递。

你不能。 您必须将维度与数组一起传递给函数func(arr)

你不能(C的美丽)。 (并且不要尝试使用sizeof,因为这只会给你指针的大小)如果另一个函数需要知道数组的大小,你必须传递这些参数(高度和宽度)作为参数用数组指针。

解决方法是不直接使用数组,而是使用这样的结构:

 struct table {
     int ** arr;
     int行;
     int列;
 }

然后,您可以使用一个函数创建表的实例,该实例获取行数和列数,并处理分配。

正如其他人所说,你做不到。 但是,您可能会发现创建一个包含行,列和指针的结构很有用。 这将允许您说:

typedef struct {int rows; int cols; int **数据; } myDataType;

… foo(myData);

void foo(myDataType myData){for(i = 0; i for(j = 0; j

(如果我的语法稍微偏离,我很抱歉; Perl,Java,C#和一些Ruby正在争夺肘部空间。)