C++ 仅使用指针递增/递减重写函数

C++ 仅使用指针递增/递减重写函数,c++,C++,谁能帮我重写我写的函数,只使用点和指针递增/递减?我没有太多的指针经验,所以我不知道该怎么办 void reverse(char * s) { int i, l = strlen(s); char c; for(i = 0; i < (l >> 1); i++) { c = s[i]; s[i] = s[l - i - 1]; s[l - i - 1] = c; } } void reverse

谁能帮我重写我写的函数,只使用点和指针递增/递减?我没有太多的指针经验,所以我不知道该怎么办

void reverse(char * s)
{
    int i, l = strlen(s);
    char c;
    for(i = 0; i < (l >> 1); i++)
    {
       c = s[i];
       s[i] = s[l - i - 1];
       s[l - i - 1] = c;
    }
}
void reverse(字符*s)
{
int i,l=斯特伦(s);
字符c;
对于(i=0;i<(l>>1);i++)
{
c=s[i];
s[i]=s[l-i-1];
s[l-i-1]=c;
}
}
不要使用指针算术或数组表示法。 任何关于如何重写上述函数的帮助或提示都将不胜感激。 这不是一个作业问题,这是一个从大C++书中提前的指针程序。
谢谢

只使用指针的增量和减量是这样的,它可以变得更紧凑,但可读性变差,因为有些人可能很难浏览和理解它。
while
可以像您一样成为
,但这更像是指针

在GCC 4.5.1中测试:

void rev(char* s)
{
    char c;
    char* e = s;
    while(*e) e++;
    e--;
    while(s < e)
    {
        c = *s;
        *s = *e;
        *e = c;
        e--;
        s++;
    }
}
void版本(字符*s)
{
字符c;
char*e=s;
而(*e)e++;
e--;
而(s

<>但是,如果你使用C++,你应该使用<代码> STD::String ……/P>不使用指针算法,如何使用指针增量/减量?UMM,指针增量和减量是指针算法的形式。请明确你想要什么和不想要什么。还有,这是家庭作业问题吗?如果没有,为什么只增加和减少指针?您尝试了什么?它怎么没有像你期望的那样工作?“…点…”???无论如何,这似乎是一个典型的家庭作业问题,而且非常简单。如果你没有使用指针的经验,为什么不读一读,然后向社区提问为什么有些东西不起作用。我认为这是一个单行线,但没有指针算法(除了递增/递减)。当你设置char*e=s时?指针指向数组的第一个元素还是整个数组?@RichardNguyen:指针指向数组的两个第一个元素。数组的第一个元素位于数组的开头,因此指针也指向整个数组的开头。
void rev(char* s)
{
    char c;
    char* e = s;
    while(*e) e++;
    e--;
    while(s < e)
    {
        c = *s;
        *s = *e;
        *e = c;
        e--;
        s++;
    }
}