如果我们在 mainA[a][b]
外部和内部全局声明一个数组,main()
我们要求的是a
andb
的值
scanf("Input values of a and b %d %d", &a,&b)
但是这个 a 和 b 正在被其他一些函数定义使用,它会给出分段错误
您的问题不是很清楚,但听起来您想要一个数组,其维度由用户在运行时指定。在 c 中执行此操作的最佳方法是 malloc 指针:
int* A = malloc(a*b*sizeof(int));
A 现在指向一个包含 a*b 元素的数组,您可以将其视为二维数组。
在要为维度 a 和 b 的数组 A 分配空间的代码中,使用:
int (*A)[b] = malloc(a * sizeof *A);
这将 A 定义为指向b
元素(元素)的行(数组)的指针,并为这些行(所以对象的行,对象int
)分配空间。a
a
b
int
a*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]…