我有一些多维数组,我必须在循环中运行它们。我的代码是这样的:
int naxes1[3] = { 10,20,1};
int naxes2[3] = { 10,20,1};
int naxes3[3] = { 10,20,1};
我喜欢这样的数组
int naxes[3] = {naxes1, naxes2, naxes3};
这样我就可以像这样遍历它们:
for ( i=0; i<3; i++)
{
fits_get_img_size(names[0], 3, naxes[i], &status);
}
在这里,我使用cfitsio库,它将naxes1,naxes2,naxes3作为三个维数组。简而言之,我们如何通过多个数组进行交互?
你很接近,但你必须记住,例如,naxes1
不是int
,但它可以是int *
。
因此,您应该有一个指向int
:
int
数组。int *naxes[3] = {naxes1, naxes2, naxes3};
如果您只尝试编译您的程序,这当然应该变得非常明显。下次,请尝试这样做,实际上,在问问题之前,阅读你得到的错误消息(它们通常包含关于你应该做什么的提示)。
这取决于你的需要。
正如Joachim Pileborg在他的回答中指出的,你可以使用指针数组。
另一方面,也可以在程序开头定义一个包含所需值的二维数组:
#define N 4
int naxes[N][3] = { {10,20,1}, { 10,20,1}, { 10,20,1}, {1, 2, 3} };
printf("naxes[3][2] == %dn", naxes[3][2]);
这里N
表示包含3个元素的数组的个数。
可以更改它以容纳所需的元素数量。