我想将输入保存到函数中,并在多个调用之间进行操作。但是,如果我执行以下操作...
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;
}
您正在尝试使用在编译时值为未知的对象初始化静态变量(在compile时完成)。在评论中,这将起作用:
...
static char* toChange;
toChange = toString;
...