C语言笔记16--关键词const

关键词const限定一个变量不允许被改变,也就是改变用户对变量的权限。const修饰时,代表这个变量是一个常量,变量被修饰后,不能再进行自增、自减等。
1.用const定义一个常量

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;//只能在定义时赋值
	//a++;不能自增
	//a=20;不能再赋值
	printf("%d\n",a);
	system("pause");
}

上面的代码简单地介绍const定义一个常量,值得注意的是const int 等价于int const。
2.const与指针
const与指针混合使用时非常容易出错,要区分是一个指针指向一个常量还是指针是常量。

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	const int *p=&a;//定义一个指针指向一个常量
	printf("%d\n",*p);
	//*p=30;不能修改
	p=&b;
	printf("%d\n",*p);
	system("pause");
}

打印结果为:
在这里插入图片描述
上面const int *p,定义了一个指针,指向常量,但指针本身是一个变量,可以指向不同的地址,并且指针不能修改指向的内容。
把上面的代码做出修改:

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	int * const p=&a;//这是指针是一个常量
	printf("%d\n",*p);
	//p=&b;不能修改指向的地址
	*p=30;
	printf("%d\n",*p);
	system("pause");
}

打印结果为:
在这里插入图片描述
上面的int * const p;是定义了一个常量指针,指针是一个常量,所以不能再重新指向地址,但可以修改指向的内容。
再对代码做出修改:

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	const int * const p=&a;//这是指针是一个常量,指向的也是一个常量
	printf("%d\n",*p);
	//p=&b;不能修改指向的地址
	//*p=30;不能修改指向的内容
	system("pause");
}

打印结果:
在这里插入图片描述
const int * const p;定义的是一个常量指针指向一个常量,他不能指向新的地址,也不能修改指向的内容。
3.总结
区分const int *,int *const,const int *const,最主要的一点是const和*的位置,当*在const的右边时,那么这个指针是一个变量,指向的是一个常量,常量不能修改,自然就不能修改内容;当*在const的左边时,那么指针是一个常量指针,不能再指向新的地址,指向的是一个变量,可以对内容作出修改。

猜你喜欢

转载自blog.csdn.net/weixin_40850689/article/details/82806895
今日推荐