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;
第2句语句是说,pa指向的内容是不可改变,第3句语句改变了pa指向的内容,所以,以上代码不正确。

int *const pa = &a;
pa = &b;
const 修饰pa,所以,pa的内容不可改变,就是里边只能存a的地址,语句3改变了pa的内容,所以以上代码不对。
(二)const与二级指针

eg:

int *pa = &a;
int **const  ppa = &pa;
*ppa = &b;
**ppa = 30; 
ppa不能改变,里边只能存放pa的地址。语句3,ppa指向b的地址,语句4是将ppa指向的b的地址的内容改为30,。并未改变ppa,所以以上程序正确。
eg:

int *const * ppa = &pa;
*ppa = &b;
ppa的指向即*ppa不可改变,第2语句改变ppa的指向,错误。
eg:
int const  ** ppa = &pa;
**pa = 30;
ppa的指向的指向不可改变,错误。

  const 与引用

    int x = 3;

   const  int  &y = x;

   y = 5;//错误

2.static

     (1)ststic修饰函数:这个函数只能在当前的.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;
}


程序运行结果是这样。两个函数看似差不多,也就是fun2的m是int 型,fun1的m被限定成静态的。static修饰局部变量时,他的值在程序执行过程中一直保持。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值