【发布时间】:2018-03-20 01:52:19
【问题描述】:
我的任务是反转一个字符串数组。我必须使用交换单个字符的交换函数,并且这个交换应该在一个循环中。将两个字符指针传递给交换函数以操作内存中的位置。所以这是我到目前为止所拥有的:
#include <iostream>
using namespace std;
void swap(char *a, char *b){ //swap function that accepts two char pointers
char temp = *a;
*a = *b;
*b = temp;
}
int main()
{
char array[5] = {'H','e','l','l','o'}; //string hello
char *start = array[0]; //pointer for start of string
char *end = array[array.length-1]; //pointer for end of string
for (int i = 0, int j = array.length - 1; i < j; i++, j-- ){
swap(start,end);
start++;
end--;
}
for(int i = 0; i < 5; i++){ //print reversed array to user
cout << array[i];
}
}
我对指针没有什么经验,所以我可能会错误地使用它们。任何帮助将不胜感激!
【问题讨论】:
-
除了明显的语法错误(
array.length不起作用),你测试过这段代码吗?快速浏览一下,您的算法看起来不错。 -
char *start = array[0];你不能用字符初始化指针,你应该这样做char *start = array; -
for (int i = 0, int j = array.length - 1; i < j; i++, j-- )可以简化很多。比较start和end。
标签: c++ arrays string pointers