将数组传递到C中的指针数组中

时间:2016-04-21 04:51:08

标签: c arrays pointers

请协助以下有关数组指针的问题。我有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. 

2 个答案:

答案 0 :(得分:2)

*ptr_Array[0] = &Graph6;错了。它应该是:

ptr_Array[0] = Graph6; /* or &Graph6[0] */

ptr_Array的类型为array 3 of pointer to unsigned shortptr_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];