gpt4 book ai didi

c - 从函数内编辑 C 数组

转载 作者:行者123 更新时间:2023-11-30 20:04:36 25 4
gpt4 key购买 nike

我正在尝试这样做:

int a[5];
foo(){
a[1]=7;
}
void main(){
foo();
//At this point, I want the value in a[1] to be equal to 7
}

是否有某种方法可以在 C 中实现此工作而不通过 a到函数foo ,这在我的应用程序中是不可能的(微 Controller 上的中断处理程序)。

最佳答案

如果在中断控制例程中修改了全局数组a,则应将其定义为:

volatile int a[5];

volatile 告诉编译器,数组元素可以在程序执行时异步更改,例如因为它们可以通过中断服务例程修改,或者因为内存位置是一个硬件寄存器,其值可能会因某些外部事件而改变。对此类变量的访问必须始终生成按照代码中指定的方式读取或写入变量的代码,这与常规变量不同,对于常规变量,如果自上次写入以来尚未对其值进行修改,则编译器通常可以对其值做出有效假设。

此外,不建议对全局变量使用如此短而无意义的名称。

另请注意,您的 foomain 原型(prototype)不正确。它们应该定义为:

void foo(void) {
a[1] = 7;
}
int main(void) {
foo();
// At this point, I want the value in a[1] to be equal to 7
// ...more code
}

关于c - 从函数内编辑 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983300/

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