C语言---关于关键字const与static的简单理解

1.const:限定符的一种,个人对const的浅显理解就是一直将const限定的对象看作常量较好理解,声明变量和数组时较简单,在这里主要讲讲在指针和形参中使用const,简单来说const放在*左侧,指针指向的数据不能改变,放在右侧,指针指向不能改变。
char y[]="helloworld",x[]="2018";
	char *const p1=y;//可看作p1的地址被const变为常量,不可再变 
	char const *p2=y;//可看作将*p2的值都变做常量,p2,p3相同意思
	const  char *p3=y; 
	const char const *p//指向不可变字符的不可变指针 
	p1=x;//地址已经是常量,不可在改变指向,错误 
	p2=x;//指向的字符串为常量,但指针指向并未限定,可变 
	*p1='x';//指针指向已被限定,当指向的字符串可改变 
	*p2='x';// 指向的字符串为常量,不可再变,错误

注:const int a[]与const int *a相同,另外,可以把const以及非const数据的地址初始化为指向const的指针或为其赋值,当是不能把const指针赋给普通指针。

int rates[]={1,2,3};
const int rock={4,5,6};
const int *pc=rates;//合法
pc=&rate[1];//合法
pc=rock//合法
int *pnc=rate;//合法 
pnc=rock; //错误 

2,static关键字:,这个关键字到目前为止基本没有接触到,百度了才发现作用是相当的多,在这里谈谈目前接触到的用法

static全局变量与static函数作用相似,主要是用来限制被修饰的函数或变量作用域为本文件,外部文件不能调用,目前很少接触,局部变量主要是让一个变量长期有效,保存了前次调用所留下来的值,以便下次调用。

#include<stdio.h>
static int a=2018;//全局变量 
static void func(void) //static函数,限制了该函数只能该文件自己利用 
{
	static int b;//局部变量,保持了上一次调用的值 
	printf("a=%d,b=%d\n",++a,++b);
}
int main()
{
	func();//2019,1
	func();//2020,2
	func();//2021,3
	return 0;
}
注:这里的a=2019,20,21,跟static没有任何关系,主要是a为全局变量,作用域也包括函数。


猜你喜欢

转载自blog.csdn.net/printfxgd/article/details/80156323