C 函数输入的静态变量

标签 c static initialization

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

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;

关于C 函数输入的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58421537/

相关文章:

java - 在 Java 中使用就地集合初始化器的缺点是什么

c++ - 如何使文件 "db/file.c"能够通过 Premake 5 说#include "db/file.h"?

c - 新手在编译c代码时出现预期的表达式错误

c - 未命名 block /sope 中静态存储持续时间变量的用途?

c# - 抽象类中的静态属性

c - 初始化错误

python - 在 __init__ 之外初始化字段

无法在 Golang 应用程序中使用已使用 cgo 编译的 C 库?

c++ - 睡后杀

java - 拥有一个包含所有非静态方法但没有非静态字段的类是否有意义? (或所有静态字段和方法以及构造函数)