C语言学习笔记----伊能C语言学习笔记----如何在一个文件中使用另一个文件中定义的变量呢??
2015-12-26 13:21
826 查看
我们知道,一个大的程序,会由多个c文件构成,这些c文件是属于同一个程序的。
那么,如何在一个文件中使用另一个文件中定义的变量呢??
解答:
C语言为了解决这个问题:引出了 全局作用域的概念
即:
在一个文件中定义的全局变量,具有全局作用域,当在本程序的其他文件中使用时,只需加上 extern外部引用声明即可。
所以:我们可以看出:
全局变量的作用域是:在整个的程序中的,在整个程序的其他文件中,是可以跨文件使用的。
但是,为了避免跨文件所带来的问题,C语言也引出了一个 文件作用域来限定全局变量的作用域。
#include<stdio.h>
#include<stdlib.h>
static int num = 10; //一旦一个全局变量在定义时加上了static限定,这时,static会把这个变量的作用域限定,便只能在本文件中使用,不能在本文件之外的c文件中使用(即使在其他文件中加上extern也不行)
int data = 101; //结合 extern 可以跨文件使用,跨文件的作用域
void print()
{
printf("\n%d\n", num);
}
void main2()
{
print();
printf("%d\n", num);
getchar();
}
/*
我们知道,一个大的程序,会由多个c文件构成,这些c文件是属于同一个程序的。
那么,如何在一个文件中使用另一个文件中定义的变量呢??
C语言为了解决这个问题:引出了 全局作用域的概念
即:
在一个文件中定义的全局变量,具有全局作用域,当在本程序的其他文件中使用时,只需加上 extern外部引用声明即可。
所以:我们可以看出:
全局变量的作用域是:在整个的程序中的,在整个程序的其他文件中,是可以跨文件使用的。
但是,为了避免跨文件所带来的问题,C语言也引出了一个 文件作用域来限定全局变量的作用域。
*/
成对的大括号及内部的语句组成了程序块。
函数体、选择和循环结构中都要用大括号表示边界
大括号内定义的变量,必须紧跟在左大括号后面,其作用范围是从定义处直到配对的右大括号之前。
若多层大括号中出现重名变量,外层同名变量在内存中被屏蔽不起作用。
我们知道,一个大的程序,会由多个c文件构成,这些c文件是属于同一个程序的。
那么,如何在一个文件中使用另一个文件中定义的变量呢??
解答:
C语言为了解决这个问题:引出了 全局作用域的概念
即:
在一个文件中定义的全局变量,具有全局作用域,当在本程序的其他文件中使用时,只需加上 extern外部引用声明即可。
所以:我们可以看出:
全局变量的作用域是:在整个的程序中的,在整个程序的其他文件中,是可以跨文件使用的。
但是,为了避免跨文件所带来的问题,C语言也引出了一个 文件作用域来限定全局变量的作用域。
#include<stdio.h>
#include<stdlib.h>
static int num = 10; //一旦一个全局变量在定义时加上了static限定,这时,static会把这个变量的作用域限定,便只能在本文件中使用,不能在本文件之外的c文件中使用(即使在其他文件中加上extern也不行)
int data = 101; //结合 extern 可以跨文件使用,跨文件的作用域
void print()
{
printf("\n%d\n", num);
}
void main2()
{
print();
printf("%d\n", num);
getchar();
}
/*
我们知道,一个大的程序,会由多个c文件构成,这些c文件是属于同一个程序的。
那么,如何在一个文件中使用另一个文件中定义的变量呢??
C语言为了解决这个问题:引出了 全局作用域的概念
即:
在一个文件中定义的全局变量,具有全局作用域,当在本程序的其他文件中使用时,只需加上 extern外部引用声明即可。
所以:我们可以看出:
全局变量的作用域是:在整个的程序中的,在整个程序的其他文件中,是可以跨文件使用的。
但是,为了避免跨文件所带来的问题,C语言也引出了一个 文件作用域来限定全局变量的作用域。
*/
成对的大括号及内部的语句组成了程序块。
函数体、选择和循环结构中都要用大括号表示边界
大括号内定义的变量,必须紧跟在左大括号后面,其作用范围是从定义处直到配对的右大括号之前。
若多层大括号中出现重名变量,外层同名变量在内存中被屏蔽不起作用。
相关文章推荐
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的get_deleter方法(自定义删除器)
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的get_deleter方法(自定义删除器)
- C++ string的遍历
- C++学习日记2015.12.26
- C++ STL算法
- C语言学习鸡汤
- C++ vector和map的嵌套使用
- C++ 中的const用法整理
- C语言和OC的区别? 面向对象和面向过程的区别?
- C++ 复制控制
- C++指针数组、数组指针、函数指针
- 纠正《Effective C++(第三版)》侯捷译 中文版中,第31条款中原文“最后,不论Handle classes或Interface classes,一旦脱离inline函数都无法...”的误译
- Dijkstra's Shortest Path - C++ for C Programmers 2.5
- c++配置mysql,读取的基本api
- C++连接本地SQL数据库
- Effective C++ 条款24
- libc++abi.dylib: terminate_handler unexpectedly threw an exception
- 程序员之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程能够分配的内存大小)
- C++ primer (第五版)学习记录1
- 求一个面的法向 c++