c++ - 指针无法在 C++ 函数中维护

标签 c++

void concat(char *str, char *ch, int num)
{
    *str= *ch; ++str;
    while (num>0) {
        *str = '0' + num % 10;
        num /= 10;
        ++str;
    }
}

concat(runner, 'a', 10);

concat(runner, 'b', 20);

我只想将一个字符如'a'连接到10,预期结果将是a10 第一行工作正常。但我只是想在第一行(concat a10)之后,运行者应该指向字符串的结尾,所以当我运行第二行时,它应该是 a10b20,但实际结果是 b20 覆盖了 a10。 我认为这应该是指针问题,你能帮帮我吗?

最佳答案

我正在完全改变我的答案。将其放在函数的开头:

void concat(char * str, const char * ch, int num) {
    while (*str) {
         ++str;
    }

然后保持其余不变。这确实是 concat 应该看起来的样子。在第一次调用之前确保 runner[0] == 0 !并将以下代码添加到函数的末尾,最后一个大括号之前:

    *str = 0;
}

关于c++ - 指针无法在 C++ 函数中维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730868/

相关文章:

c++ - 使用选择排序对字符串进行排序

c++ - 监控 GPS 坐标

c++ - Cuda Thrust内存管理

c++ - 如何理解新的运算符(operator)重载?

java - 如何使用 Opencv 将 PNG 从 Java 类传递到 Android 中的 Native 类

c++ - 检查三点是否共线

c++ - "Error reading character of string"为散列动态增长数组的问题 (C++)

c++ - 使用 boost::is_any_of 的多个拆分 token

c++ - 具有 QDataStream 行为的奇怪 QByteArray

c++ - 具有写时复制的多态类的 QList?