C:将对堆栈变量的引用存储在数组中

时间:2018-06-21 17:34:53

标签: c reference stack

我正在编写在嵌入式MCU上运行的程序,因此我所有的内存分配都分配给了堆栈(没有malloc())。我在函数中创建了一个结构,并将其返回给调用方,并且在返回之前,我试图在数组中保留对该变量的引用。

问题在于存储在数组中的变量似乎是返回给调用者的变量的副本,因此它们不同步。下面的代码说明了该问题:

HelloWorld

此打印:测试:1,ARRAY_OF_VARIABLES [0]:0

如何在没有malloc()和指针的情况下使“测试”和“ ARRAY_OF_VARIABLES [0]”保持同步?

1 个答案:

答案 0 :(得分:0)

我通过创建一个函数来解决此问题,该函数可以将i的指针传递回去以存储在ARRAY_OF_VARIABLES中。这是新代码:

#include <stdio.h>
int *ARRAY_OF_VARIABLES[1];

int initalizeVariables() {
    int i = 0;
    return i;
}

void setInArray(int *i, int idx) {
    ARRAY_OF_VARIABLES[idx] = i;
}

int main(void)
{
    int test = initalizeVariables();
    setInArray(&test, 0);
    test = 123;
    printf ("Test: %d, ARRAY_OF_VARIABLES[0]: %d\r\n", test, *ARRAY_OF_VARIABLES[0]);
}

如果有更好的方法可以进行发布,请随时发布:)。