C函数输入上的状态变量

问题描述 投票:0回答:2

我想将输入保存到函数中,并在多个调用之间进行操作。但是,如果我执行以下操作...

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无法设置为非静态变量。我一直在试图找出解决方法,但找不到任何答案。

c static
2个回答
1
投票

静态变量应通过常量表达式初始化。

写类似的东西

 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;

}


0
投票

您正在尝试使用在编译时值为未知的对象初始化静态变量(在compile时完成)。在评论中,这将起作用:

...
static char* toChange;
toChange = toString;
...
© www.soinside.com 2019 - 2024. All rights reserved.