此函数正在从传入的值中删除空格str
.
*(new++) = *str;
意味着将指针指向新的字符串并取消引用它,以便我们可以使用它来存储它指向的记忆中的位置.然后取str指向的值,并将其取消引用它指向的char.将该char分配给new所在的位置,然后将新指针移动到下一个位置.最后,总是移动str指针,str++
如果值是空格.
如果用这种方式写的话可能会更清楚:
void r(char *str)
{
char *new = str;
int newStringIndex = 0;
for(int i=0; str[i] != '\0'; i++)
{
if (str[i] != ' ')
{
new[newStringIndex++] = str[i];
}
}
new[newStringIndex] = '\0';
}
Run Code Online (Sandbox Code Playgroud)
相同的代码功能,但使用for循环和数组索引而不是指针数学.