简单栈的实现:
stack.c
#define MAX 100
int sp = 0;
int val[MAX];
void push(int value){
if(sp<MAX){
val[sp++]=value;
}else{
printf("wrong");
}
}
int pop(){
if(sp>0){
return val[--sp];
}else{
return 0;
}
}
ceshi.c
#include<stdio.h>
int main(){
void push(int val);
//对外部变量的使用
extern int sp;
int pop();
push(3);
push(4);
push(5);
push(6);
printf("the sp is%d",sp);
}
同时编译stack.c和ceshi.c,会看到sp为4,证明确实在ceshi.c中引用到了stack.c中的外部变量。
将statck.c中的外部变量用static修饰,ceshi.c不做改动,然后同时编译两个文件,你会看到undefined的报错,这就很好的验证了static只对源文件可见。
分享到:
相关推荐
### C语言中static变量使用方法详解 在C语言编程中,`static`关键字扮演着一个非常重要的角色,尤其是在处理变量的存储方式、作用域以及生命周期方面。本文将深入探讨C语言中`static`变量的使用方法,包括静态局部...
- 应避免在函数中过多使用外部变量,以减少全局状态的依赖,提高代码可读性和可维护性。 9. **函数调用和实参**: - 调用函数时,实参的值传给形参,但形参不能直接修改实参的值。 - 在C语言中,函数调用时的...
例如,使用`#include`指令引入头文件,使用`extern`声明在其他文件中定义的变量或函数,利用`#define`进行宏定义,以及利用`static`修饰局部变量或函数以保持其作用域的局部性。 总结来说,学习C语言,掌握结构化...
存储类型决定了变量的作用域和生命周期,如auto(局部变量)、static(静态变量)、extern(外部变量)等。而在C语言中,数据类型则定义了变量能够存储的数据种类,如int(整型)、char(字符型)、float(浮点型)...
C语言中的变量类型是编程的基础,它决定了变量的存储方式、生命周期和作用域。下面将详细解释这些变量类型: 1. **auto** 变量: - `auto` 是默认的变量类型,通常用于函数内部定义的变量。它们在函数执行时分配...
但可以通过指针作为参数实现传引用的效果,使得函数能修改外部变量。 5. 函数指针: 函数指针是一种特殊的指针,它存储了函数地址,可以用来调用函数。这在回调函数、动态调用函数等场景中非常有用。 6. 局部与...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出关于嵌入式C语言的几个关键知识点,包括变量修饰符(auto, const, register, static, volatile, extern)的使用,以及指针与数组的定义。下面将对这些知识...
### 外部变量与static内部变量的区别 #### 外部变量 - **定义**:未使用`static`关键字的全局变量。 - **特点**: - 生存期贯穿整个程序运行过程。 - 作用域覆盖整个源程序,即使在多个源文件中也可以访问。 - **...
4. **外部变量**(`extern`): 用于声明一个在其他源文件中定义的变量。 #### 7.10 内部函数和外部函数 1. **内部函数**: 只能在定义它的源文件中使用,不能被其他源文件访问。 2. **外部函数**: 可以在多...
总结来说,理解C语言中的变量类别和编译预处理是掌握C语言的基础。全局变量、局部变量、静态变量和寄存器变量各有其特点和用途,而编译预处理则提供了代码复用和文本替换的手段,增强了代码的可读性和效率。在实际...
在这个实例中,“单片机C语言实例-输出50个矩形脉冲.zip”是一个教学资源,它通过C语言编程展示了如何使用单片机生成50个矩形脉冲。C语言是编写单片机程序的常用语言,因为它的效率高、灵活性强。 1. C语言基础: ...
总的来说,理解和正确使用全局变量与局部变量是C语言编程的基础,也是提升代码质量和可维护性的关键。在实际开发中,我们需要根据需求和性能考虑选择合适的变量类型,并尽可能地减少全局变量的使用,以降低代码的...
4. **变量的存储类型**:在C语言中,变量有不同的存储类型,如自动变量(`auto`)、静态变量(`static`)、寄存器变量(`register`)等。 5. **作用范围**:变量的作用范围是指变量存在的生命周期及其可见性,主要...
- 内部变量(局部变量)与外部变量(全局变量)的区别。 - 当内部变量与外部变量同名时的处理方法。 6. **生存期**: - 动态存储(`auto`, `register`修饰的变量)与静态存储(`static`修饰的变量)的区别。 - ...
本篇将详细介绍如何通过`extern`关键字来扩充外部变量的作用域以及如何使用`static`关键字来限定外部变量的作用域。 ### 扩充外部变量的作用域 外部变量默认的作用域是整个源文件,但如果想让它们在特定函数或另一...
外部变量的声明有两种情况:在同一源文件内声明,以及在其他源文件中声明并使用。 了解这些基本概念后,程序员可以更好地管理内存,避免命名冲突,并有效地控制变量的生命周期和访问权限,这对于编写高质量的C语言...
本资源摘要信息涵盖了C语言的基础知识点,包括原码、反码和补码的概念、变量的存储类型、输入输出函数、运算符等。 一、原码、反码和补码 * 原码:十进制数的二进制形式,人可以看懂。 * 反码:原码转换成补码的...
标题《51单片机C语言变量定义》和描述《51单片机C语言变量定义》揭示了本文档主要围绕51单片机使用C语言进行编程时变量定义的具体知识点展开。51单片机通常指的是基于Intel 8051微控制器架构的一系列微控制器,广泛...
- `static`关键字在C语言中有多种用途,包括但不限于定义全局静态变量、局部静态变量以及静态函数。 - 它们各自的作用域、存储位置以及初始化规则有所不同。 - 使用`static`关键字可以帮助开发者更好地管理变量的...