请协助以下有关数组指针的问题。我有20个数组,每个数组长350个元素。我需要将20个数组中的select 3的地址传递给指针数组。 然后在我的代码中,我需要在指针数组中访问数组中的各个元素。但是我不确定语法,请评论以下是否正确。
unsigned short Graph1[350];
unsigned short Graph2[350];
unsigned short Graph3[350];
... ... ...
unsigned short Graph19 [350];
unsigned short Graph20 [350];
unsigned short *ptr_Array[3];
...
*ptr_Array[0] = &Graph6; // Passing the address of array Graph6, into the array of pointers.
*ptr_Array[1] = &Graph11; // Passing the address of array Graph11, into the array of pointers.
*ptr_Array[2] = &Graph14; // Passing the address of array Graph14, into the array of pointers.
...
Varriable1 = *ptr_Array[1]+55 // Trying to pass the 55th element of Graph11 into Varriable1.
答案 0 :(得分:2)
*ptr_Array[0] = &Graph6;
错了。它应该是:
ptr_Array[0] = Graph6; /* or &Graph6[0] */
ptr_Array
的类型为array 3 of pointer to unsigned short
。 ptr_Array[0]
的类型为pointer to unsigned short
,*ptr_Array
的类型为unsigned short
。
Graph6
的类型为array 350 of unsigned short
,如果在表达式中使用,耗尽到pointer to unsigned short
。
Varriable1 = *ptr_Array[1]+55
也错了。要传递55 th 元素,请使用
Varriable1 = ptr_Array[1][55];
答案 1 :(得分:2)
表达式*ptr_Array[1]+55
多次错误,因为operator precedence。
编译器将其视为(*(ptr_Array[1]))+55
,即它需要ptr_Array
中的第二个指针并取消引用它以获取第一个值,并将55添加到该值,这不是您想要的。您需要明确使用*(ptr_Array[1]+55)
之类的括号。或者只是ptr_Array[1][55]
。
你应该考虑Mohit Jain的评论。而不是使用20个不同的变量,只需使用一个:
unsigned short Graph[20][350];