lili200238 发表于 2016-11-2 23:31:14

关于external的用法

/*
题目:学习使用 external 的用法。
*/

#include<stdio.h>

int a,b,c;

void add()
{
        int a;
        a=3;
        c=a+b;
}

void main()
{
        a=b=4;

        add();

        printf("The value of c is equal to %d \n", c );
}


此题是“C语言经典例题”里的一道题目,但题目里明明没有看到关于external的用法,不知是我没有看明白,还是什么原因,各位明白题目意思的“鱼友”们,欢迎补充......................................

期待中...........................

小甲鱼 发表于 2016-11-3 04:04:15

恰好今天讲到了 external,不妨可以看一下 -> http://blog.fishc.com/5135.html

小甲鱼 发表于 2016-11-3 04:05:52

链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编译器是如何处理的呢?这就要看链接属性了。


在C语言中,链接属性一共有三种:

[*]external(外部的)—— 多个文件中声明的同名标识符表示同一个实体
[*]internal(内部的)—— 单个文件中声明的同名标识符表示同一个实体
[*]none(无)—— 声明的同名标识符被当作独立不同的实体

默认情况下,具备文件作用域的标识符拥有 external 属性。也就是说该标识符允许跨文件访问。对于 external 属性的标识符,无论在不同文件中声明多少次,表示的都是同一个实体。

lili200238 发表于 2016-11-3 09:14:36

小甲鱼 发表于 2016-11-3 04:05
链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编 ...

个人认为此题中只涉及到了全局变量和变量的作用域,并没有关于external的用法。

或者是我的认识有些肤浅?

lili200238 发表于 2016-11-3 09:15:15

小甲鱼 发表于 2016-11-3 04:05
链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编 ...

个人认为此题中只涉及到了全局变量和变量的作用域,并没有关于external的用法。

或者是我的认识有些肤浅?

lili200238 发表于 2016-11-3 09:16:36

小甲鱼 发表于 2016-11-3 04:04
恰好今天讲到了 external,不妨可以看一下 -> http://blog.fishc.com/5135.html

哇!哇!哇!

小甲鱼老师的回复,好激动......................

musilintan 发表于 2016-11-3 09:20:32

上面不是定义了3个全局变量a,b,c么,然后你在创建一个.cpp,在这个新的.cpp里面去引用这3个全局变量,试着在新的.cpp里面改变他们的值,看看main()中的打印会不会有变化。
external的核心就是跨文件引用。前缀有external的只是一个写名字的过程,不是创造一个实体的过程。详细的看楼上的回复。
页: [1]
查看完整版本: 关于external的用法