我想保存一个函数的输入,并在多个调用之间操作它。但是,如果我做以下的事…

int testFunc(char *toString) {
        static char *toChange = toString;
        static int counter = 0;

        toChange[counter] = 'A';
        printf("String is being corrupted... %s\n", toChange);
        counter++;

        return 0;
}

我得到一个错误,说输入toChange不能设置为非静态变量。我一直在想如何避开这个问题,但我找不到任何答案。

最佳答案

静态变量应通过常量表达式初始化。
写些类似的东西

 int testFunc(char *toString) {
    static char *toChange;
    static int counter;

    if ( toChange == NULL )
    {
        toChange = toString;
        counter = 0;
    }

    toChange[counter] = 'A';
    printf("String is being corrupted... %s\n", toChange);
    counter++;

    return 0;

}

08-27 00:56