C语言中 const int* 和 int* const 的区别是什么
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章给大家分享的是有关C语言中 const int* 和 int* const 的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看
千家信息网最后更新 2025年01月23日C语言中 const int* 和 int* const 的区别是什么
本篇文章给大家分享的是有关C语言中 const int* 和 int* const 的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
#includeusing namespace std;/* 学习const 修饰的空间. const int a; int const a; const int* a; // 修饰的 a 指向的内存空间 , int* const a; // 修饰的是a 变量. const int* const a; // 指针变量和指针指向的内存空间都不可以修改.. 怎么理解这个呢,修饰的是指针, 那么指针和变量的区别是啥呢, 说白了都是地址, 保护一个指针是一个什么概念呢, 如果是保护的值指针变量本身, 那么和int* const 就没有区别了, 所以, 再向远处想一点,会不会是保护的是指针指向的变量的值不可以修改呢, 回头会发现, const做了一个 堵路的操作, int* const : 不可以直接操作变量,如修改变量的内容,说白了就是内存中的值. const* int : 不可以通过指针间接的操作内存中的内容, 反推 : 在整个C 语言的系统中,还有那个操作可以直接修改内存中的值. const int* 总结 : 决定了一什么样的方式去限制修改内存, const 靠谁近, 就决定了限制方式, const 离 int* 近, 说明这是一个拒绝间接修改内存空间的. const 离 变量名近, 说明这是一个拒绝直接修改内存空间的.*/void test1(){ int a = 10; int c = 100; const int* b; // 修饰的是未来的空间, 完全可以再起一行进行赋值. // 这样的操作修改的是b变量, 并不是 const int* 想要的效果, b = &c; //*b = 100; // 这个才是正确的验证方法, int* const d = &a; // 如果修饰的是变量, 那么在初始化的时候, 就必须给值, 不可以再起一行进行赋值. //d = &c; // 这样的是修饰的是d变量, 如果修改了d变量的值, 程序会提示错误. /* 小结: 说白了就是保护变量本身的值, 还是保护变量所指空间的值, 保护数据的范围不一样, 一个保护当下资源的值, 另外一个更像是保护更远一点资源的值 怎么用呢, 变量的使用位置: 变量的定义和变量的赋值操作, 按照上述的描述, 会遇到上述的2种情况. 变量在函数实参上的表现 1 如果函数的参数是 const int* 这样的, 意为这什么呢, 在函数内部是可以修改指针对应变量所在内存空间中的值. 2 如果函数的参数是 int* const a,这样的, 在函数内部是, 不可以在给a变量进行赋值的, 变量在函数返回值上的表象, 1 如果函数的返回值是 const int* 这样的,可以么, 2 如果函数的返回值是 int* const 这样的,可以么. 做返回值的这个,完全依赖于接受者是一个什么状态, 接受后要咋个处理, 直接修改内存还是间接修改内存. */}/* 这样修饰的是变量对应指针的空间不可以修改.*/void test1(const int* a){ //*a = 100; // 表现和正常的赋值没有区别, 是不允许修改的. a = (int*)0x01; return;}void test2(int* const a){ int c = 100; //a = &c; // a变量是不可以修改的, return;}/* const int* 这样的做返回值是没有意义, 接受者必须是一个const int* 类型的 函数返回后,如果对的接受者做 *var= ** 的操作, 如同普通的变量赋值的操作, 还是看 const int* 的约束能力, */const int* test3(){ static int b = 5; static int* a =&b; return a;}/* 同 test3是一样的, 函数返回后, 接受者的状态表明了一且,*/int* const test4(){ static int c = 3; static int* a =&c; return a;}int main(){ int a = 10; test1(&a); const int* p = test3(); //*p = 100; // 这样是不可以的, 修饰的是未来的空间, cout << *p << endl; int* const q = test4(); //q = &a; cout << *q << endl; return 0;}
以上就是C语言中 const int* 和 int* const 的区别是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
变量
内存
函数
指针
空间
保护
接受者
语言
说白了
就是
指向
说白
还是
一行
内容
参数
方式
更多
状态
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全最新舆情
网络安全审查坚持几点
智慧城市智能管控平台软件开发
tomcat服务器上传
网络安全是全球性的挑战
停车系统软件开发怎么收费
ftp服务器目录
寺庙网络安全宣传
网络安全技术包括哪些
网络安全意识大学班会策划
管理员如何解除禁止登录服务器
购买阿里云ecs服务器
数据库用的是哪个软件
数据库应用和技术论文
vb数组找第二大的数据库
数据库管理系统开发人员
重庆腾马网络技术有限公司
吉林网络技术咨询诚信经营
雷电模拟器4连接不到服务器
杭州软件开发哪家服务好
elk日志 数据库
高陵市网络安全倡议书
迷你世界火山生存怎么建立服务器
联想服务器启动盘
塞班软件开发包
数据库教程答案
数据库系统
魔兽世界178数据库不更新
sql数据库考试证书
水平最高的论文数据库