gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:30:42 24 4
gpt4 key购买 nike

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

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

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

int initalizeVariables() {
int i = 0;
ARRAY_OF_VARIABLES[0] = &i;
return i;
}

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

这将打印:测试:1,ARRAY_OF_VARIABLES[0]:0

如何在没有 malloc() 和指针的情况下保持“test”和“ARRAY_OF_VARIABLES[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]);
}

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

关于C:在数组中存储对堆栈变量的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com