C 在函数外部更改静态变量的值

C 在函数外部更改静态变量的值,c,pointers,reference,static,C,Pointers,Reference,Static,我的任务是尝试在C中的函数之外更改静态变量的值 我看过一些关于这个话题的帖子,特别是这篇帖子的一些评论: 有一条评论说,通过引用/指针参数传递变量或通过引用返回,但我觉得我缺乏实现这一点的理解 我对静态变量的理解是,变量的内存只分配一次,当变量超出范围时不会释放。根据,函数中的静态变量在调用之间保留其值,并且仅在声明它的文件中可见。我设置了一个基本示例来说明静态变量的传统用法: int myFunction(); void main() { printf("%d ", myF

我的任务是尝试在C中的函数之外更改静态变量的值

我看过一些关于这个话题的帖子,特别是这篇帖子的一些评论: 有一条评论说,通过引用/指针参数传递变量或通过引用返回,但我觉得我缺乏实现这一点的理解

我对静态变量的理解是,变量的内存只分配一次,当变量超出范围时不会释放。根据,函数中的静态变量在调用之间保留其值,并且仅在声明它的文件中可见。我设置了一个基本示例来说明静态变量的传统用法:

int myFunction();

    void main() {

    printf("%d ", myFunction());
    // console should show value of 1
    printf("%d ", myFunction());
    // console should show value of 2
    printf("%d ", myFunction());
    // console should show value of 3

    return 0;
}

int myFunction() {
    static int counter = 0;
    counter++;
    return counter;
}

使函数返回变量的地址

int* myFunction() {
    static int counter = 0; 
    counter++; 
    return &counter; 
}
然后,主要可以使用以下功能:

int* ptr = myFunction();
*ptr = 0; // reset counter back to zero