C 函数输入的静态变量

C Static variables on function inputs

我想保存一个函数的输入并在多个调用中对其进行操作。但是,如果我执行以下操作...

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 || toString == NULL ) 
    {
        toChange = toString;
        counter = 0;
    } 

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

    return 0;

}

这样做:

int testFunc(char *toString) {
    static char *toChange = NULL;
    static int counter = 0;
    if (toChange == NULL) {
        toChange = (char*)malloc(strlen(toString) + 1);
        memset(toChange, 0, strlen(toString) + 1);
        strcpy(toChange, toString);
    }
    toChange[counter] = 'A';
    printf("String is being corrupted... %s\n", toChange);
    counter++;
    return 0;
}