递增指针而不是递增数组及其索引
incrementing a pointer instead of incrementing an array an it's index
所以我有以下问题
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++;
}
但是下面的代码没有提供相同的结果。
我有一种感觉,我没有正确地增加指针。
有人可以帮我吗?
提前谢谢你。
给定一个数组int arr[5] = { 1, 2, 3, 4, 5 };
并且你有一个指针 ptr
指向数组的开头,通常 ptr + i
指向数组前面的 i
位置,这相当于 arr[i];
.
因此在您使用指针运算 *(ptr + 2) === arr[2]
等的情况下,括号是必需的。
您可以继续递增指针 ptr++
或其他任何内容,但您必须确保不要超出数组内存 space.
所以我有以下问题
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++;
}
但是下面的代码没有提供相同的结果。 我有一种感觉,我没有正确地增加指针。 有人可以帮我吗? 提前谢谢你。
给定一个数组int arr[5] = { 1, 2, 3, 4, 5 };
并且你有一个指针 ptr
指向数组的开头,通常 ptr + i
指向数组前面的 i
位置,这相当于 arr[i];
.
因此在您使用指针运算 *(ptr + 2) === arr[2]
等的情况下,括号是必需的。
您可以继续递增指针 ptr++
或其他任何内容,但您必须确保不要超出数组内存 space.