在 C 中查找指针数组的索引
Find index of pointer array in C
我正在查看带有指针的东西,它的作用类似于数组大小约为 800 的数据的缓冲区。它正在循环并将数据集按顺序放置在各个索引处。
假设我们有 1001 和一个 space,然后是 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
当你在许多类型的表达式中使用数组时,它会退化为指针。所以如果你想找到一个指针的索引,只需减去数组的基数:
setIndex = p1 - p2;
现在p1 == &p2[setIndex]
.
我正在查看带有指针的东西,它的作用类似于数组大小约为 800 的数据的缓冲区。它正在循环并将数据集按顺序放置在各个索引处。
假设我们有 1001 和一个 space,然后是 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
当你在许多类型的表达式中使用数组时,它会退化为指针。所以如果你想找到一个指针的索引,只需减去数组的基数:
setIndex = p1 - p2;
现在p1 == &p2[setIndex]
.