鱼C论坛

 找回密码
 立即注册
查看: 1223|回复: 5

[已解决]文件作用域

[复制链接]
发表于 2021-11-6 16:01:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zxcvbnmasdf 于 2021-11-6 16:02 编辑

想问下各位大佬,函数和全局变量文件作用域是从声明位置开始到文件的结尾处,还是从定义位置开始从文件的结尾处

例如下面这个代码,func函数的作用域是从第3行对它的声明void func(void);开始到结尾,还是从下面17行定义func函数开始到结尾
还有全局变量count,因为上面第7行有用extern声明了count,所以count的作用域是在main函数中和下面15行定义int count;到结尾吗?


#include<stdio.h>

void func(void);

int main(void)
{
        extern int count;
        func();
        count++;
        printf("In main,count=%d\n",count);
        
        return 0;
}

int count;

void func(void)
{
        count++;
        printf("In func,count=%d\n",count);
}
最佳答案
2021-11-6 16:25:56
本帖最后由 jackz007 于 2021-11-6 16:30 编辑

        全局变量和函数一样,其作用域都是从定义(或声明)的位置开始,一直到本源代码文件结束,extern 定义的是外部变量,这个变量使用的是其他源代码文件中定义的同名全局变量。如果在函数中定义了与全局变量同名的变量,那么,这个变量只能是函数的同名局部变量,与全局变量毫无关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-6 16:11:47 | 显示全部楼层
从声明位置开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-6 16:25:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-11-6 16:30 编辑

        全局变量和函数一样,其作用域都是从定义(或声明)的位置开始,一直到本源代码文件结束,extern 定义的是外部变量,这个变量使用的是其他源代码文件中定义的同名全局变量。如果在函数中定义了与全局变量同名的变量,那么,这个变量只能是函数的同名局部变量,与全局变量毫无关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-6 17:01:24 | 显示全部楼层
本帖最后由 zxcvbnmasdf 于 2021-11-6 17:03 编辑
jackz007 发表于 2021-11-6 16:25
全局变量和函数一样,其作用域都是从定义(或声明)的位置开始,一直到本源代码文件结束,extern  ...


但小甲鱼不是有说全局变量的声明和定义是不一样的,局部变量才既是定义又是声明,
像上面我发的代码,声明位置和定义位置就不一样,所以到底是从声明变量的位置开始,还是定义变量的位置开始?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-6 17:54:29 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-6 17:56 编辑
zxcvbnmasdf 发表于 2021-11-6 17:01
但小甲鱼不是有说全局变量的声明和定义是不一样的,局部变量才既是定义又是声明,
像上面我发的代码, ...


          声明只是在标识符使用在前,定义在后,或者,标识符的定义出现在其它文件中的时候,才是有必要的。至于说局部变量,你认为它有必要进行声明吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-6 19:08:07 | 显示全部楼层
进来学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表