在C中查找指针数组的索引

时间:2015-02-20 16:10:26

标签: c arrays pointers

我正在寻找一些指针,它的作用类似于数据大小约为800的数据的缓冲区。它循环并在各种索引处按顺序放置数据集。

假设我们有1001和一个空格然后0110它将填充缓冲区“1001 0110 1001 0110 1001”等等......

所以我想要做的是找到它当前所在的索引并将其改为“1001 0110”,改为“0101 0110 0101 0110”。

所以,基本上我想找到缓冲区的索引并在进入其输出例程之前更改内部数据。

以下是我正在看的内容:

char *p1;
char p2[800];
int setIndex = 0;

if (p1 >= &p2[p2_length - 1]) p1 = &p2[0];
else ++p1;

如何设置“setIndex”以更改p2所在的值?例如:p2 [setIndex],什么是setIndex?我只是将setIndex设置为指针地址值或该地址的值吗?我有点困惑。谢谢。

编辑:

感谢Barmar给我的答案。

setIndex = p1 - p2;

p2[setIndex] = '1'; //or whatever value you want to change to

1 个答案:

答案 0 :(得分:2)

当您在许多类型的表达式中使用数组时,数组将衰减为指针。因此,如果要查找指针的索引,只需减去数组的基数:

setIndex = p1 - p2;

现在p1 == &p2[setIndex]