gpt4 book ai didi

c - 程序有效性;循环内定义的变量的生命周期和范围

转载 作者:行者123 更新时间:2023-12-05 02:04:15 25 4
gpt4 key购买 nike

考虑程序

#include <stdio.h>
int main(void) {
for (int curr = 0; curr < 3; curr++) {
int prev;
if (curr) {
printf("%d\n", prev); //valid; prev has 0 or 1
}
prev = curr;
}
}

有效吗?
prev 的生命周期和范围是多少?

  1. for 循环中将有 3 个不同的 prev 具有生命周期和作用域。
    不同的 prev 可以(但不是必须)共享相同的地址。
    程序无效。

  2. for 循环中将有 3 个 prev 具有生命周期和作用域。
    prev 将共享相同的地址,就像使用 static 定义一样。
    程序有效。

  3. 将有 1 个 prev,就好像它是在 for 循环之外定义的。
    程序有效。

注意:问题源于关于 this answer 的讨论

最佳答案

三个不同且不同的 prev 不(需要)共享地址或值。

在每个循环中,不同的 prev 将被“创建”和“删除”。

关于c - 程序有效性;循环内定义的变量的生命周期和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64525770/

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