用extern声明外部变量时其存储方式及可见性与存在性?

问题如下,本人c语言初学者,在学谭浩强红书,教材书提了两个事实:
1.外部变量的存在性和可见性一致
2.非静态外部变量采用静态存储方式
我有一点迷惑,实际操作时:
我在file1定义了外部变量,在file2写extern声明作用域,将其写在了某个file2的函数里。但是我在file2的其他函数就没法访问这个变量了,看得出来,extern的声明位置也会影响它的作用域。
基于这个问题,我有一点困惑: 这个变量在file2里是怎么存在的?静态还是动态?如果是静态的话,岂不是存在性和可见性不一致了?如果是动态,那与2也相悖。

万能的资深前 辈 们,谢谢解答!

不知道你说的静态和动态是指什么意思。谭浩强是一个基础概念比较不清楚的人。。。