09_关于变量
静态变量
一、静态变量
static关键字
static int i;
二、静态变量的运用
1、计算函数被调用次数
2、返回指针
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
int* square3(int *x) { int a=*x * *x; return &a; //危险 用自动变量 } #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void test() { static int i=1;//只有第一次会赋初值 printf("%d\n",i++); } int* square3(int *x) { static int a=0; a=*x * *x; return &a; //是静态变量无危险 } main(void) { //test(); //test(); //test(); int a=3; int *pa=square3(&a); test(); printf("%d\n", *pa); getchar(); getchar(); return 0; }
全局变量
一、全局变量
声明
全局变量的定义和一般变量定义相同,不同的就是它的位置。一般会放在所有共享函数的前边。
作用
在函数间共享数据。
二、全局变量的运用
三、作业:
写出代码运行结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <stdio.h> #include <stdlib.h> int i=11; //0 int i=0;全局变量 void a() { //int i=111; printf("%d\n",i) ; i++; } void b() { static i=12; printf("%d\n",i) ; i++; } void c() { printf("%d\n",i) ; i++; } int main() { a();c(); b(); getchar(); return 1; }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
11 12 12