如何在 C 中创建一个具有负下界和正上限的二维数组?

问题描述 投票:0回答:1

在 Visual Basic 中我可以做类似的事情

dim MyArray(-10 to 10, -10 to 10) as long

我希望同样在 C 中使用类似的代码来做到这一点

long MyArray[-10 to 10][-10 to 10];

然而,C 给我上述代码编译错误。 C 中不允许负数组索引吗?我需要这个来绘制二维强度值图,其中强度是 x 和 y 的函数,其中 x 和 y 延伸为正值和负值。

arrays c 2d
1个回答
0
投票

数组上的负索引在 C 中肯定是可能的,毕竟这只是一个算术运算。如果确实需要使用负索引,可以使用指向中间值的指针,然后对该值使用负索引。

举个简单的例子:

long myArray[21] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
long *myArrayPtr = &myArray[10];

printf("%d\n", myArrayPtr[-10]); // returns 1
printf("%d\n", myArrayPtr[0]); // returns 11
printf("%d\n", myArrayPtr[10]); // returns 21
© www.soinside.com 2019 - 2024. All rights reserved.