c语言 const关键字

  • const修饰变量(非指针),使变量常量化,也就是使变量不能够被修改
    eg:const int a = 10; int const a=10;此时a只能是10,不能被改变了。如果没有用const修饰,a可以被赋值,比如a=20;
  • const修饰指针变量,会使指针变量常量化,但是要注意const的位置
    1.const int *p 此时const修饰的是指针指向的内容,限制通过指针去改变指向的内容,但是内容本身可以修改,只是不能通过指针修改。指针的指向也是可以改变。eg:
#include <stdio.h>
//#define _DEBUG_

int main(int argc, char const *argv[])
{
	int m=100,n=200;
	const int *p;

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

	m++;
	printf("2) %d %p %d %p\n", m,&m,*p,p);

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

#ifdef _DEBUG_
	*p = n;
	printf("4) %d %p %d %p\n", m,&m,*p,p);
#endif // _DEBUG_

	return 0;
}

在这里插入图片描述
上述的示例,可以总结出此种const用法**不能通过指针修改指向的内容!**仅此而已,另外包含的知识点:调试的时候宏定义调试要顶头,可以在头文件中定义调试宏,也可以通过编译的时候直接连接。通过参数-D 《连接的宏名字》

2.常量化指针指向的对象
int *const p;此时指针修改指针变量p,该情况下指针指向不能改变,其余的都可以改变。也就是指针的地址不能改。

#include <stdio.h>
//#define _DEBUG_

int main(int argc, char const *argv[])
{
	int m=100,n=200;
	int *const p=&m;
	printf("1) %d %p %d %p\n", m,&m,*p,p);

	m++;
	printf("2) %d %p %d %p\n", m,&m,*p,p);
#ifdef _DEBUG_
	p=&n;
	printf("3) %d %p %d %p\n", m,&m,*p,p);
#endif // _DEBUG_

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


	return 0;
}

3.常量化指针变量以及目标
const int *const p;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值