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++;
}
}