首页 > 解决方案 > 如何判断函数何时访问局部变量或外部变量?

问题描述

我目前正在尝试理解我遇到 C 认证测试的这段代码。代码的正确输出是 12、13、13。我尝试在调用 3 个最终输出之前打印出这些值,我注意到原因是在顶部声明的外部 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);
}

标签: calgorithm

解决方案


始终从最近的范围内获取变量。
每当printf("...", x)调用 时,它都会x从函数中获取main()

该函数modifyvalue()始终在x所有函数的外部运行。

该函数changevalue(int x)始终对参数进行操作x- 这是传入变量的副本。

所以在你的情况下,这两个函数基本上对xin没有任何作用main()


推荐阅读