|
|
各位我写了下面的代码,其中loopMove是实现字符串循环右移steps位。
我的问题是我为什么用char str[] = "abcdefg";就能实现到,如果用char* str = "abcdefg"; 就出现错误呢?它们不是都指向同一个地址吗?我知道一个是数组一个是指针,但数组名好像也是作为指针用的。请大家给我解释一下好吗?我真的对数组与指针有点混淆了。
void loopMove(char* pStr, int steps);
int main(int argc, char* argv[])
{
char str[] = "abcdefg";
//char* str = "abcdefg"; //为什么不能用char*
cout<<str<<endl;
loopMove(str, 2);
cout<<str<<endl;
return 0;
}
void loopMove(char* pStr, int steps)
{
int n = strlen( pStr ) - steps;
char tmp[24];
memcpy( tmp, pStr + n, steps );
memcpy(pStr + steps, pStr, n );
memcpy(pStr, tmp, steps );
}
|
|