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;
}
我想保存一个函数的输入并在多个调用中对其进行操作。但是,如果我执行以下操作...
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;
}