八股——const 关键字

1.const作用

作用:const用于保护指针指向数据不被修改

测试代码1

显示数组的函数不小心修改了指针指向的值,这时候没有加const关键字,编译器不会报错

cpp 复制代码
#include <stdio.h> 

void  showar(int ar[]);

int main(void)
{
	int ar[4]={2,3,4,5};
	showar(ar);
//	muliar(ar);
	
	return 0;
	
} 

void  showar(int ar[]){
	int i;
	for(i=0;i<4;i++){
        ar[i]++;
		printf("ar[%d]:%d\n",i,ar[i]);
		
	}
	
}

测试代码2

显示数组的函数不小心修改了指针指向的值,这时候 加const关键字,编译器报错

cpp 复制代码
#include <stdio.h> 

void  showar(const int ar[]);

int main(void)
{
	int ar[4]={2,3,4,5};
	showar(ar);
//	muliar(ar);
	
	return 0;
	
} 

void  showar(const int ar[]){
	int i;
	for(i=0;i<4;i++){
		ar[i]++;
		printf("ar[%d]:%d\n",i,ar[i]);
		
	}
	
}

2.const与#define区别

const的限定有限,限定的是自己,限定的是常量,别人要修改也管不着。

3.const的3种用法

const int *p=ar;

这样限定的是指针p不能修改指向的值 *p 或 p[2],但是仍然可以修改p的指向或者ar

int * const p=ar;

这样限定的是指针p能修改 指向的值*p / p[2],但是不可以修改p的指向

const int * const p=ar;

这样限定的是指针p不能修改 指向的值*p / p[2],也不可以修改p的指向

相关推荐
想打游戏的程序猿9 小时前
核心概念层——深入理解 Agent 是什么
后端·ai编程
woniu_maggie10 小时前
SAP Web Service日志监控:如何用SRT_UTIL快速定位接口问题
后端
一线大码10 小时前
Java 使用国密算法实现数据加密传输
java·spring boot·后端
Rust语言中文社区10 小时前
【Rust日报】用 Rust 重写的 Turso 是一个更好的 SQLite 吗?
开发语言·数据库·后端·rust·sqlite
在屏幕前出油11 小时前
06. FastAPI——中间件
后端·python·中间件·pycharm·fastapi
wuqingshun31415912 小时前
说一下spring的bean的作用域
java·后端·spring
钟智强12 小时前
从2.7GB到481MB:我的Docker Compose优化实战,以及为什么不能全信AI
后端·docker
华科易迅13 小时前
Spring JDBC
java·后端·spring
小村儿13 小时前
一起吃透 Claude Code,告别 AI 编程迷茫
前端·后端·ai编程
程序员大飞哥13 小时前
云控SLA的数学:250ms端到端延迟预算怎么分配给传输层
后端