gpt4 book ai didi

c - 如何判断函数何时访问局部变量或外部变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:34 24 4
gpt4 key购买 nike

我目前正在尝试理解我在 C 认证测试中遇到的这段代码。代码的正确输出是 12, 13, 13。在它调用 3 个最终输出之前,我尝试打印出这些值,我注意到原因是在顶部声明的外部 x 与函数内部的 x 之间存在范围差异。我的问题是,我如何知道在整个代码中哪些函数正在访问哪个对象?

#include <stdio.h>
#include <stdlib.h>

int x;
int modifyvalue()
{
return(x+=10);
}
int changevalue(int x)
{
return(x+=1);
}


int main(){
int x=10;
x++;
printf("[1] %d \n\n", x);
changevalue(x);
printf("[2] %d \n\n", x);
x++;
printf("[3] %d \n\n", x);
modifyvalue();
printf("First output:%d \n\n\n",x);
x++;
changevalue(x);
printf("Second output:%d \n\n\n",x);
modifyvalue();
printf("Third output:%dn \n\n\n",x);
}

最佳答案

总是从最近的作用域中获取变量。
每当调用 printf("...", x) 时,它都会从函数 main() 中获取 x

函数 modifyvalue() 总是在所有函数之外的 x 上运行。

函数 changevalue(int x) 总是对参数 x 进行操作 - 它是传入变量的副本。

所以在你的例子中,这两个函数基本上对 main() 中的 x 没有任何作用。

关于c - 如何判断函数何时访问局部变量或外部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440623/

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