c++ - reverse() 和学习指针

标签 c++ pointers reverse

我知道有很多像我这样的问题,但阅读了一些对我没有帮助。可能是因为我是编程新手并且很难使用指针。

作为练习,我尝试在 C++ 中创建一个函数来反转输入的字符串。这是我的功能:

char* reverse(const char* t)
{
    int j, k;
    char* aString = new char[100];

    for(j=0, k=strlen(t)-1; j < strlen(t); j++, k--)
    {
        aString[j]=t[k];
    }

    aString[j+1]='\0';

    return aString;
}

但是,输入根本不会被反转。我做错了什么?

最佳答案

在 C++ 中,您有一个更好、更干净、更安全、更容易和更具可读性的选项 - std::string

这是一个函数 reverse() 的简单示例,它返回一个反转的 std::string:

void swap(string& str, int index1, int index2) {

    char temp = str[index1];
    str[index1] = str[index2];
    str[index2] = temp;

}

string reverse(string str) {

    int size = str.size();

    for (int i = 0; i < size / 2; i++) 
        swap (str, i, size - i - 1);

    return str;

}

关于c++ - reverse() 和学习指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264486/

相关文章:

c++ - AES 限制和混合列

c - 如何找到数组的大小(从指向数组第一个元素的指针)?

c++ - 为什么C++允许从外部修改一个常量对象的指针成员变量的内存?

c++ - 将数组参数传递给函数

c++ - 在 Ubuntu 中安装 OpenGL/Glut 库

c - 解释C中的一行代码——指针和强制转换

java - 为什么我的reverse()方法会反转两个MyLinkedList对象?

Linux shell 命令反转变长文本记录的字段顺序

c - MIPS 反转位代码(从 C 代码转换)......但它不起作用

c++ - 使用OpenSSL和锁的多线程程序随机崩溃