如何在c中访问数组内部的数组元素?
我试图访问数组“levels”中的第一个元素如何在c中访问数组内部的数组元素?,c,C,我试图访问数组“levels”中的第一个元素 unsigned char Level1[70] = { 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x07,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x02,0x01, 0x01,0x01,0x0b,0x01,0x01,0x01
unsigned char Level1[70] =
{
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x01,0x01,0x01,0x01,0x01,0x03,0x07,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x02,0x01,
0x01,0x01,0x0b,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x08,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0f,0x02,0x02,0x02,0x02,0x02,
0x02,0x02,0x02,0x02,0x02,0x02
};
unsigned char (*levels)[1] = {&Level1};
我尝试过以下方法:
unsigned char curr_level[70] = levels[0];
但它们没有起作用
谢谢大家! 警告:此答案可能不正确有关详细信息,请参阅评论 根据你的声明,
unsigned char (*levels)[1] = {&Level1};
levels
是字符指针数组,因此levels[0]
是字符指针。因此,根据您想做的事情,您可以尝试以下方法之一:
unsigned char *curr_level=levels[0];
或
嗯?我只看到一个数组。levels[0]是指向数组的指针,而不是数组。如果
70
是一个有意义的数字,它应该是一个#定义某种常量。无符号字符(*levels)[1]
声明levels
是指向1无符号字符数组的指针,而不是“字符指针”数组<代码>级别[0]
是由1无符号字符组成的数组;它不是“字符指针”,尽管在许多用途中,它会转换为指向其元素的指针。@eric谢谢。这是因为括号(或者如果是无符号字符*levels[]
),会有什么不同吗?根据您的评论,这样声明实际上是不正确的(因为有人滥用数组作为指针)?
unsigned char *curr_level;
curr_level=malloc(sizeof(Level1)); /* Don't forget to call free() on it later */
memcpy(curr_level,levels[0],sizeof(Level1));