C51学习心得体会,static和extern在程序中的应用

发布者:TranquilSoul最新更新时间:2018-01-03 来源: eefocus关键字:C51  static  extern 手机看文章 扫描二维码
随时随地手机看文章

1、用statIC、extern可以声明变量

1.1 可用static声明全局变量和局部变量(包括数组)。

(1)用static声明的局部变量只能被定义该变量的函数识别,在退出函数时该局部变量仍然保持其值,

e.g. void temp()

{

static int array[];//静态局部变量

......

}

用static声明局部数组可以避免在每次调用函数时都建立和初始化数组,以及在每次退出函数时撤销数组,缩短程序执行时间。

(2)用static声明静态外部变量,可以限定外部变量只被本文件引用,不会被其他文件引用.为文件的模块化、通用性提供方便.

e.g. file1.c(file1文件)

static int A;//静态外部变量

main(){ }

注意:外部变量和静态外部变量都是静态存储的,只是作用范围不同.


1.2 存储类别说明符extern

extern外部变量的作用域是从变量定义处开始,到本程序文件的末尾.

(1)在一个文件内声明外部变量

用extern声明外部变量以扩展它在程序文件中的作用域

e.g.main()

{

extern int A,B;//外部变量声明

......

}

int A=14,B=-3;//定义外部变量

(2)在多文件的程序中声明外部变量

如一个程序包含多个文件,在一个文件中定义外部变量,在其他文件中extern做外部变量声明.

e.g.文件file1.c中定义

int A;

文件file2.c中

extern int A;//作用域扩大,不再分配内存


2、用static、extern可以声明函数

(1)内部函数(静态函数)-用static声明

用static声明的内部函数,只能被本文件中的其他函数调用,调用范围只局限与所在文件,不同文件中有同名的内部函数,互不干扰.

e.g.static int fun(int a,int b)

(2)外部函数-用extern声明

★用extern声明的外部函数可供其他文件调用.一般没有任何声明的函数都是外部函数.

e.g.extern int fun(int a,int b)

★在需要调用此函数的文件中.用extern声明所用的函数是外部函数.

e.g.file1.c(file1文件)

main()

{

extern printf_string(char str[]);//声明在本函数中要调用其他文件中的函数

......

}

file2.c(file2文件)

void printf_string(char str[])

{......}

注意:extern可以省略,如使用#include,可在文件中直接调用其中的函数.


3、标识符有四种作用域:函数作用域、文件作用域、块作用域、函数原型作用域。

(1)标号(跟有冒号的标识符,如start:)是唯一具有函数作用域的标识符。编号可用于函数中任何地方,但不能在函数之外引用。用在swtich结构(case:)和goto语句中。

(2)函数之外的全局变量、函数声明和函数原型具有文件作用域,

e.g.extern x=10;

void temp(void);

(3)static声明的局部变量具有块作用域,

e.g.void temp(void)

{

static int x=10;

}

(4)用在函数原型参数列表中的标识符具有函数原型作用域,

e.g.void temp(const [],int);


关键字:C51  static  extern 引用地址:C51学习心得体会,static和extern在程序中的应用

上一篇:C51程序设计中的数组和指针关系
下一篇:C51学习心得体会,数组在程序设计中的应用

推荐阅读最新更新时间:2024-03-16 15:51

interrupt 和 using 在C51中断中的使用
8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个串口输入/输出中断),两级中断优先级;128 字节内置RAM;独立的 64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务 处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最低地址处,注意这里的串口输入/输出中断共用一个中断向量。8051的中断向量表如下: 中断源 中断向量 --------------------------- 上电复位 0000H 外部中断0 000
[单片机]
C51编译器-高级编程技巧(5)-数据存储格式
Data Storage Formats数据存储格式 这一部说明可用的数据类型的存储格式。Cx51提供了几种数据存储格式如下: Data Type Bits Bytes Value Range bit 1 0 to 1 signed char 8 1 -128 to +127 unsigned char 8 1 0 to 255 enum 8 / 16 1 or 2 -128 to +127 or -32768 to +32767 signed short 16 2 -32768 to +32767 unsig
[单片机]
Keil C51对C语言的关键词扩展之十六:sfr16
sfr16定义一个16位的特殊功能寄存器: sfr16 name = address; name 16位特殊功能寄存器名称 address 16位特殊功能寄存器地址 一些8051系列产品拥有16位的特殊功能寄存器,比如8052使用地址0XCC、0XCD表示定时/计数器2的低字节、高字节。C51编译器提供sfr16数据类型以便将两个8位特殊功能寄存器当做一个16位寄存器来访问。 sfr16只能在小端模式下使用,低字节的地址作为16位特殊功能寄存器的地址: sfr16 T2 = 0xCC; /* Timer 2: T2L 0CCh, T2H 0CDh */ sfr16 RCAP2 = 0xCA
[单片机]
单片机C语言C51程序中的基本结构
一.顺序结构 顺序结构是最基本、最简单的结构,在这种结构中,程序由低地址到高地址依次执行,如图给出顺序结构流程图,程序先执行A操作,然后再执行B操作。 二.选择结构 选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支。如图:当条件S成立时,执行分支A,当条件P不成立时,执行分支B。 在C51中,实现选择结构的语句为if/else,if/else if语句。另外在C51中还支持多分支结构,多分支结构既可以通过if和else if语句嵌套实现,可用swith/case语句实现。
[单片机]
单片机C语言<font color='red'>C51</font>程序中的基本结构
c51语言设计数码管,中断设计1s显示0~F,采用proteus仿真
如何通过数码管显示0~F? 数码管有共阴和共阳两种 共阳型阳极为公共端,阳极为段选信号输入 共阴型阴极为公共端,阴极为段选信号输入 注:段选输入方式直接决定了这一位输出的字形 eg: 共阳极数码管的段选编码应为:11000000B= 0xC0H 共阴极数码管的段选编码应为:00111111B = 0x3FH 中断设计1s显示0~F实验源码 #include reg52.h #include intrins.h #define uchar unsigned char int i=0; int flag=0; uchar code DSY_CODE = //通过16进制数,设置数码管显示内容 { 0xc0,0xf9
[单片机]
<font color='red'>c51</font>语言设计数码管,中断设计1s显示0~F,采用proteus仿真
C51编程12-中断篇(中断原理2)
中断可以用下面的例子理解 工程师A在自己的位置做着自己的工作(写代码),工程师B有个问题需要请教工程师A,于是工程师B就会跑过来跟工程A请教。这时工程师A的写代码的工作会被打断,开始回答工程B的问题,解答完问题后,工程师A又开始愉快的写代码。从工程师B打断工程师A,到工程师A继续写代码这者整个过程叫中断。 1)工程师B的问题,称为中断源 2)工程师A停止当前的工作,准备解答称为:中断响应; 3)工程师A解答问题的过程称为:中断服务程序; 4)工程师A解答完继续回到写代码的状态称为:中断返回。 中断系统 引起MCS-51中断的中断源有几种呢?从以下的中断系统中可以看到有5种中断请求源,它们分别是EX0、E
[单片机]
<font color='red'>C51</font>编程12-中断篇(中断原理2)
如何用C51编AD程序
问:用C51编写AD程序时,一般可以分为哪几个步骤?也就是说它的流程是怎么样的,还有需要哪些条件 答:C51编写AD程序之前,我建议你先读一下你使用的ADC芯片的sheets,了解ADC的模拟输入的通道和转换后的数字量的位数和传输方式,sheets中都会有严格时序的说明,你要做的就是严格按照时序编程. 一般是:选中ADC芯片;然后对ADC写控制字启动转换;给下降沿或上升沿传输转换的数字量到CPU;比较数字量是否正确,不正确则需要重新转换. 说不清楚,我使用AD7888时大体是这样的,可能有出入. 建议您根据具体的ADC看转换时序吧!
[单片机]
单片机C51编程规范
1单片机C51编程规范- 前言   为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。 2 单片机C51编程规范-范围   本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对C51编程语言和keil编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。 3 单片机C51编程规范-总则 l 格式清晰 l 注释简明扼要 l 命名规范易懂 l 函数模块化 l 程序易读易维护 l 功能准确实现 l 代码空间效率和时间效率高 l 适度的可扩展性 4 单片机C51编程规范-数据类型定义 编程时统一采用下述新类型名的方式定义数据类型。 建立一个datatype.h
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved