const与static归纳总结
static与const都是C语言中的关键字,他们都可以修饰变量,函数等。
1.const
const与 变量
int x = 5; // 变量
const int x = 5;//在c++中,x是常量,在c语言中,x是不可改变的变量
const与指针类型
- int a = 10;
- int b = 20;
- int *pa = &a;
- int **ppa = &pa;
- *ppa = &b;
- **ppa = 30;
我们用图来表示各种指向关系。
注:图中给出的地址是假设的,并非真实地址。~~
(一)const与一级指针
eg:
- int a= 10;
- int const *pa = &a;
- *pa = 30;
- int *const pa = &a;
- pa = &b;
(二)const与二级指针
eg:
- int *pa = &a;
- int **const ppa = &pa;
- *ppa = &b;
- **ppa = 30;
eg:
- int *const * ppa = &pa;
- *ppa = &b;
eg:
- int const ** ppa = &pa;
- **pa = 30;
const 与引用
int x = 3;
const int &y = x;
y = 5;//错误
2.static
(1)static修饰函数:这个函数只能在当前的.c文件可见,这样就可以在不同的.c文件中定义同名函数,而不引起冲突,只要其中一个函数用static修饰;
(2)static修饰局部变量:static变量定义在一个函数内,只有这个函数可以读取它,它的值在程序执行时一直保持;
(3)static修饰全局变量:ststic变量定义在一个文件中,只有这个文件可以读取它。
下边我们来看一道例题:
- #define _CRT_SECURE_NO_WARNINGS 1
- #include<stdio.h>
- void fun1()
- {
- int i = 0;
- for (i = 0;i < 10;i++)
- {
- static int m = 0;
- m++;
- printf("%d ",m);
- }
- printf("\n");
- }
- void fun2()
- {
- int i = 0;
- for (i = 0;i < 10;i++)
- {
- int m = 0;
- m++;
- printf("%d ",m);
- }
- }
- int main()
- {
- fun1();
- fun2();
- system("pause");
- return 0;
- }