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为全局变量,作用域也包括函数。