我正在查看一些带有指针的东西,它就像一个缓冲区,用于存储数组大小约为 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;
Run Code Online (Sandbox Code Playgroud)
为了更改 p2 所在位置的值,我应该将“setIndex”设置为什么?例如:p2[setIndex],setIndex 是什么?我是否只是将 setIndex 设置为指针地址值或该地址处的值?我有点困惑。谢谢你。
编辑:
感谢 Barmar,这个答案对我有用。
setIndex = p1 - p2;
p2[setIndex] = '1'; //or whatever value you want to change to
Run Code Online (Sandbox Code Playgroud)
当您在许多类型的表达式中使用数组时,它会衰减为指针。所以如果你想找到一个指针的索引,只需减去数组的基数:
setIndex = p1 - p2;
Run Code Online (Sandbox Code Playgroud)
现在p1 == &p2[setIndex]。