数组+标量? C

时间:2016-02-23 02:55:14

标签: python c

我有一个我一直在玩的程序,我偶然发现了这样的事情:

unsigned char tmp[4];
...
if (mpu_write_mem(D_1_36, 2, tmp+2))
    return -1;

,其中

int mpu_write_mem(unsigned short mem_addr, unsigned short length,
    unsigned char *data)

请原谅我的无知,但我究竟是如何在数组中添加2?我不太明白。我一直在尝试使用Python制作一个程序,我一直在使用它作为参考,但我只是傻眼了,如果有人可以帮助这样的类似的Python等效,它也会非常有用。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您没有向数组中添加2,而是在tmp的内存地址中添加2。在C数组中,存储为一组 n (数组长度)顺序存储器地址。所以代码tmp + 2意味着你在第二个位置启动数组; Python等价物将是 tmp [2:]

另请注意,传递给函数的长度为2,尽管tmp的长度为4.这是因为你启动了2个元素,只留下tmp [2]和tmp [3]。