在 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 延伸为正值和负值。
数组上的负索引在 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