相关疑难解决方法(0)

C指针算术片段

我有一个程序,我正在尝试解码.它被另一种语言翻译成C(这里没有说出其名称),并且我想了解它是如何工作的,我正在慢慢地重写代码并简化它以使用C提供的所有好的逻辑结构.

以下一点点不断出现在我的代码中,其中包含不同的值XY:

ptr[X]--;
while(ptr[X])
  {
    ptr[X]--;
    ptr += Y;
  }
Run Code Online (Sandbox Code Playgroud)

ptr是类型的char *,我无法在任何时候对数组的状态做出假设,因为它非常深入地嵌入循环并依赖于输入和输出.我可以成功地"简化"到:

for(ptr[X]--; ptr[X]; ptr[X]--, ptr += Y);
Run Code Online (Sandbox Code Playgroud)

但那太糟糕了.曾经如此稍微好一点:

for(ptr[X]--; ptr[X]; ptr += Y) ptr[X]--;
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人能够更好地简化上述代码,我将不胜感激.这种情况发生在不少于五个地方,并且削弱了我简化和理解流量控制的能力,所以如果任何人都可以提供更简洁/可读的版本,那将是非常棒的.如果任何人都可以提供对该代码的任何奇特的洞察力,那将是非常棒的,虽然我基本上了解它的作用.

洞察特定的代码X和/或Y也可以提供帮助.Y往往介于-2和2之间,X通常为1,因为它的价值.

c pointers while-loop nested-loops

4
推荐指数
1
解决办法
714
查看次数

标签 统计

c ×1

nested-loops ×1

pointers ×1

while-loop ×1