存储类别4:静态外部链接变量 静态外部链接变量简称为外部变量(External Variables),或全局变量(Global Variables) ■ 通过参数传递信息是和函数通信的主要方式, 此外与函数通信还可通过外部变量的方式进行 ■外部变量的性质 必静态存储生存期 文件作用域(File scope) 外部链接 16
存储类别4:静态外部链接变量 静态外部链接变量简称为外部变量(External Variables),或全局变量(Global Variables) 通过参数传递信息是和函数通信的主要方式, 此外与函数通信还可通过外部变量的方式进行 外部变量的性质 静态存储生存期 文件作用域(File scope) 外部链接 16
示例:用外部变量实现栈(Stack) 栈是一种数据结构(Data Structure),像数组那 样可以存储多个相同类型的数据 ■栈的工作方式比较特别,是一种后进先出 (LFO)的数据结构,有两种主要操作: Push:压栈,将数据放入栈的顶端,成为新的栈顶 an item(add it to one end一the“stack top") Pop:出栈,从栈顶端移除一个元素 ■直接访问栈内部的元素是禁止的 17
示例:用外部变量实现栈(Stack) 栈是一种数据结构(Data Structure),像数组那 样可以存储多个相同类型的数据 栈的工作方式比较特别,是一种后进先出 (LIFO)的数据结构,有两种主要操作: Push: 压栈,将数据放入栈的顶端,成为新的栈顶 an item (add it to one end—the “stack top”) Pop: 出栈,从栈顶端移除一个元素 直接访问栈内部的元素是禁止的 17
栈的实现方式考量 可以用数组来存储栈的数据,栈在数组之上提 供push和pop接口 用一个整型变量top指示栈顶在数组中的下标 位置,该位置处可以压入新值 数组为空时,栈顶top为0 push:将数据存储在top所指位置,接下来增长 top ■pop:减小top,然后将top所指位置的元素取出 18
栈的实现方式考量 可以用数组来存储栈的数据,栈在数组之上提 供push和pop接口 用一个整型变量top指示栈顶在数组中的下标 位置,该位置处可以压入新值 数组为空时,栈顶top为0 push: 将数据存储在top所指位置,接下来增长 top pop: 减小top, 然后将top所指位置的元素取出 18
栈实现 接下来的代码给出了栈的具体实现 该实现还给出了一系列代表栈操作的函数作为 应用的接口 ■由于所有的5个函数都要访问栈顶top,两个函 数要访问底层存储具体数据的数组,因此数组 和top都声明为外部变量 19
栈实现 接下来的代码给出了栈的具体实现 该实现还给出了一系列代表栈操作的函数作为 应用的接口 由于所有的5个函数都要访问栈顶top,两个函 数要访问底层存储具体数据的数组,因此数组 和top都声明为外部变量 19
栈实现代码1 #include <stdbool.h> /C99 only * #define STACK SIZE 100 /external variables * int contents[STACK_SIZE]; int top 0; void make_empty(void) E top 0; ) bool is_empty(void) E return top =0; 20
栈实现代码1 20 #include <stdbool.h> /* C99 only */ #define STACK_SIZE 100 /* external variables */ int contents[STACK_SIZE]; int top = 0; void make_empty(void) { top = 0; } bool is_empty(void) { return top == 0; }