0

如果我们在 mainA[a][b]外部和内部全局声明一个数组,main()我们要求的是aandb的值

scanf("Input values of a and b %d %d", &a,&b)

但是这个 a 和 b 正在被其他一些函数定义使用,它会给出分段错误

4

2 回答 2

0

您的问题不是很清楚,但听起来您想要一个数组,其维度由用户在运行时指定。在 c 中执行此操作的最佳方法是 malloc 指针:

int* A = malloc(a*b*sizeof(int));

A 现在指向一个包含 a*b 元素的数组,您可以将其视为二维数组。

于 2013-02-18T20:11:55.867 回答
0

在要为维度 a 和 b 的数组 A 分配空间的代码中,使用:

int (*A)[b] = malloc(a * sizeof *A);

这将 A 定义为指向b元素(元素)的行(数组)的指针,并为这些行(所以对象的行,对象int)分配空间。aab inta*b int

在要接收此数组的函数中,以这种方式声明该函数:

void foo(size_t a, size_t b, int (*A)[b])
{
    …
}

这表示 foo 的参数是 size a、 sizeb和指向b int对象行的指针。

像这样调用函数:

foo(a, b, A);

A以正常方式使用 的元素:

…A[i][j]…
于 2013-02-18T20:47:49.790 回答