递增指针而不是将数组递增到它的索引

时间:2018-04-08 15:23:22

标签: c arrays pointers increment pointer-arithmetic

所以我有以下问题

if(buffer[i]== ' '&&buffer[i+1]==' '&&buffer[i+2]==' ')
    { 


        buffer[i]= '*';

        putchar(buffer[i]);

        i = i + 2

        continue;  
    }

    putchar(buffer[i]); 

    i++;
}

这部分代码用*。

替换3个空格

所以我的挑战是将所有数组访问替换为指针算术

char *tmp0_pointer; // initialised in  main function


 if(*tmp0_pointer== ' '&&*tmp0_pointer+1==' ' &&*tmp0_pointer+2==' ' )

{ 
   tmp0_pointer = buffer+i; 

      *tmp0_pointer= '*';
    i = i + 2

    continue;  
}
tmp0_pointer = buffer+i;
putchar(*tmp0_pointer); 

i++;
}

但是,下面的代码并没有提供相同的结果。 我有一种感觉,我没有正确地增加指针。 有人可以帮帮我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

给定数组int arr[5] = { 1, 2, 3, 4, 5 };

你有一个指向数组开头的指针ptr,通常ptr + i指向数组前面的i位置,相当于arr[i];

所以在你的情况下使用指针算术*(ptr + 2) === arr[2]等等,括号是必需的。

您可以继续递增指针ptr++或其他任何内容,但您必须确保不要超出阵列内存空间。