【问题标题】:Passing multidimensional array as an argument in c将多维数组作为c中的参数传递
【发布时间】:2012-11-24 14:03:40
【问题描述】:

所以基本上,我要做的是将数组作为参数传递。我想出了这样的想法:

#include <stdio.h>
#include <stdlib.h>

int x;

void function(int array[][x]){
    //stuff here
}

int main(){
    x = random(10);
    int array[10][x];
    //initialize array
    function(array[10][x]);
}

我认为这应该可行,但它给了我一个提示:

预期为“int (*)[(unsigned int)(x)]”,但参数的类型为“int”

任何帮助将不胜感激。

【问题讨论】:

  • 数组声明肯定也是无效的,因为 x 在编译时是未知的。如果我错了,请纠正我,但你应该为此使用 malloc。 int* array = (int*)malloc(10*x)
  • @B_o_b:它被称为VLA(可变长度数组),支持 C99 及更高版本(但不支持 C++)
  • @another.anon.coward:我感觉我要学习新东西了。谢谢你。为像我这样的其他人留下评论。

标签: c function multidimensional-array arguments argument-passing


【解决方案1】:

您将参数错误地传递给函数。 正如所指出的,它应该是function(array)。
其他观察:
1. random() 的使用可能应该是 random()%10; 而不是 random(10); 除非它的一些非标准功能。
2. int main() 应该是 int main(void) 或 int main(int argc, char **argv)
3.你应该从main比如return 0或者return EXIT_SUCCESS返回一个int值

补充说明:
请注意,您可能无法在函数中获取数组的实际尺寸。可能你应该考虑传递数组的维度,以防你打算在函数中使用它。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    使用

    function(array)
    

    而不是

    function(array[10][x])
    

    您可能想阅读我几天前制作的this post。

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多