栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

作用域和链接属性

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

作用域和链接属性

一、作用域:

        当变量被定义在程序的不脱那个位置时,它的作用范围是不一样的,这个作用范围就是我们所说的作用域。

C语言编译器可以确认4种不同类型的作用域:

        1.代码块作用域

#include
int main()
{
        int i=100;//i1
        {
                printf("i2=%dn",i);
                int i=111;//i2
                {
                        int i=333;//i3
                        printf("i3=%dn",i);
                }
                //出到了这里,i变回了111
                {
                        printf("i4=%dn",i);
                        int i=666;//i4
                        printf("i4=%dn",i);
                }
                printf("i2=%dn",i);
        }
        printf("i1=%dn",i);
        return 0;
}

运行结果:

lhy@ubuntu:~/xiaojiayu$ gcc p32-1.c 
lhy@ubuntu:~/xiaojiayu$ ./a.out 
i2=100
i3=333
i4=111
i4=666
i2=111
i1=100

        2.文件作用域

#include

void func();

int main()
{
        extern int count;

        func();
        count++;
        printf("In main,count=%dn",count);
        return 0;
}
int count;

void func()
{
        count++;
        printf("In func,count=%dn",count);
}

运行结果:

lhy@ubuntu:~/xiaojiayu$ gcc p32-2.c 
lhy@ubuntu:~/xiaojiayu$ ./a.out 
In func,count=1
In main,count=2

        3.原型作用域

        4.函数作用域

二、链接属性

 

​#include
void a();
void b();
void c();
int count;
int main()
{
        a();
        b();
        c();
        b();
        printf("count=%dn",count);
        return 0;
}

​
extern int count;
void a()
{
        count++;
}
extern int count;
void b()
{
        count++;
}
extern int count;
void c()
{
        count++;
}

运行结果:

lhy@ubuntu:~/xiaojiayu$ gcc p32-3.c a.c b.c c.c 
lhy@ubuntu:~/xiaojiayu$ ./a.out 
count=4

#include
void a();
void b();
void c();
static count;
int main()
{
        a();
        b();
        c();
        b();
        printf("count=%dn",count);
        return 0;
}
extern int count;
void c()
{
        count++;
}

运行结果:

lhy@ubuntu:~/xiaojiayu$ gcc p32-3.c a.c b.c c.c 
p32-3.c:5:8: warning: type defaults to ‘int’ in declaration of ‘count’ [-Wimplicit-int]
 static count;
        ^~~~~
/tmp/cck8WWlb.o: In function `a':
a.c:(.text+0x6): undefined reference to `count'
a.c:(.text+0xf): undefined reference to `count'
/tmp/ccbT0cJ9.o: In function `b':
b.c:(.text+0x6): undefined reference to `count'
b.c:(.text+0xf): undefined reference to `count'
/tmp/cc01llk8.o: In function `c':
c.c:(.text+0x6): undefined reference to `count'
/tmp/cc01llk8.o:c.c:(.text+0xf): more undefined references to `count' follow
collect2: error: ld returned 1 exit status

另:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号