Cracking the Coding Interview 习题1.2:
实现中遇到一个问题:
Implement a function void reverse(char* str) in C or C++ which reverses a null-terminated string.
定义一个头指针一个尾指针,不停地交换他们指向的元素并且头指针++,尾指针--
代码:
#include "stdafx.h"
#include <string>
#include <iostream>
void reverse(char*);
int main()
{
using namespace std;
char str[] = "This is a test";
int size = strlen(str);
reverse(str);
cout<<str<<endl;
return 0;
}
void reverse(char* str)
{
char *start = str;
char *end = start+strlen(str)-1;
while(start<end)
{
char temp = *end;
*end = *start;
*start=temp;
start++;
end--;
}
}
实现中遇到一个问题:
char *str = "This is a test", 如果字符串是这样初始化的话是改变不了它的值的,因为在这种情况下"This is a test"是一个常量字符串而str是一个指向这个常量字符串的指针。