目录

一、const的简单介绍

二、const关键字的用法

 1:   const修饰全局变量

 2:const修饰普通局部变量

 3:const修饰指针变量的类型(即常量指针)

 4:const修饰指针变量(即指针常量)

 5:const既修饰指针变量类型又修饰指针(即常量指针常量)

 三、总结

一、const的简单介绍

const含义:只要一个变量前用const来修饰,就意味着该变量里的数据只能被访问,而不能被修改,也就是意味着“只读”(readonly)。

const作用: 1:可以用来修饰变量,修饰函数参数,修饰函数返回值,且被const修饰的东西,都受到强制保护,可以预防其它代码无意识的进行修改,从而提高了程序的健壮性 2:使编译器保护那些不希望被修改的参数,防止无意代码的修改 3:增强代码的可读性

二、const关键字的用法

1:const修饰全局变量

此时全局变量只能使用不可修改,直接修改(编译报错)与修改地址(程序异常)都不行

#include

//const修饰全局变量

//此时全局变量只能使用不可修改,直接修改(编译报错)与修改地址(程序异常)也不行

const int a = 100;

void test1()

{

printf("a = %d\n", a);//直接使用

//a = 666;//直接修改,编译报错,显示a是只读的

//printf("a = %d\n", a);

//int *p = &a;

//*p = 888;//通过地址修改,程序异常,有些编译器可能只会显示警告,并不会报错,且程序能正常运行,但是不会显示任何结果

//printf("a = %d\n", a);

}

int main(int argc, char *argv[])

{

test01();

return 0;

}

直接使用

这是直接修改a,编译报错

 通过地址修改a的值出现的警告(有些编译器则不能通过编译,会直接报错)

 运行结果(并未显示任何东西)

 2:const修饰普通局部变量

不可直接修改变量的值(编译报错),但是可以通过地址进行修改

#include

//const修饰普通局部变量

//不可直接修改(编译报错),但是可以通过地址进行修改

void test2()

{

const int b = 100;

printf("b = %d\n", b);

//b = 666;//直接修改,编译报错

//printf("b = %d\n", b);

int *p = &b;

*p = 888;//通过地址进行修改

printf("b = %d\n", b);

}

int main(int argc, char *argv[])

{

test2();

}

直接修改(编译报错)

 通过地址修改

 3:const修饰指针变量的类型(即常量指针)

int a = 100;

const int *p = &a;

int const *p = &a;

const修饰指针变量的类型,可直接修改变量值,不可修改指针指向的地址里的内容(编译报错),可以修改指针的指向

#include

void test3()

{

int c = 100;

const int *p = &c;

printf("c = %d\n",c);

c = 666;//可以直接修改变量的值

printf("c = %d\n",c);

//*p = 888;//不可修改指针指向的地址里的内容,编译报错

//printf("c = %d\n",c);

int d =999;

p = &d;//可以修改指针的指向

printf("*p = %d\n",*p);

}

int main(int argc, char *argv[])

{

test3();

}

直接修改变量的值

通过指针修改地址里面的值(编译报错)

 修改指针指向

4:const修饰指针变量(即指针常量)

int a = 5;

int * const p = &a;

 可以直接修改变量的值,可以修改指针指向地址的内容,但是不能修改指针的指向(编译报错)

#include

void test4()

{

int c = 200;

int * const p = &c;//const修饰指针,即指针常量

printf("*p = %d\n",*p);

c = 666;

printf("c = %d\n",c);//直接修改值

printf("*p = %d\n",*p);

*p = 888;//修改指针指向地址里的内容

printf("*p = %d\n",*p);

int d =999;

//p = &d;//不能修改指针的指向,编译报错

//printf("*p = %d\n",*p);

}

int main(int argc, char *argv[])

{

test4();

return 0 ;

}

直接修改变量值

 修改指针指向地址的内容

 修改指针指向(编译报错)

 5:const既修饰指针变量类型又修饰指针(即常量指针常量)

int a = 100;

const int * const p = &a;

可直接修改变量值,不能修改指针指向地址的内容,不能修改指针指向

#include

void test5()

{

int c = 200;

const int * const p = &c;//即修饰指针变量类型又修饰指针变量

printf("*p = %d\n",*p);

c = 666;//可以直接修改值

printf("c = %d\n",c);

printf("*p = %d\n",*p);

//*p = 888;//不能修改指针指向地址里的内容,编译报错

//printf("*p = %d\n",*p);

//int d =999;

//p = &d;//不能修改指针指向,编译报错

//printf("*p = %d\n",*p);

}

int main(int argc, char *argv[])

{

test5();

return 0;

}

直接修改变量值:

 修改指针指向地址的内容:

 修改指针指向:

 三、总结

对于const关键字的使用,我这里只介绍了修饰全局变量、修饰局部变量以及修饰指针的用法,因为这些用法较多,而修饰函数则需大家再做研究。同时一般在初学阶段基本很少使用const关键字,大家在进入工作或是一些较复杂的项目中才会经常使用,所以大家可以在初学阶段尝试使用,养成良好习惯。

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。