C语言中指针常量和常量指针的区别是什么
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍了C语言中指针常量和常量指针的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中指针常量和常量指针的区别是什么文章都会有所收获,下面我们一起
千家信息网最后更新 2025年01月16日C语言中指针常量和常量指针的区别是什么
这篇文章主要介绍了C语言中指针常量和常量指针的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中指针常量和常量指针的区别是什么文章都会有所收获,下面我们一起来看看吧。
在面试中我们经常会被面试官问到什么是常量指针,什么又是指针常量。
指针常量就是指针本身是常量,指针里面所存储的内容(内存地址)是常量,不能改变。但是,对应内存地址里存的内容是可以通过指针改变的。
常量指针就是指向常量的指针,指针中所存地址中对应的值是常量,不能通过指针来修改它的值。但是,指针自身不是常量,它自身的值可以改变,从而指向另一个地址。
指针常量与常量指针的声明
指针常量的声明:数据类型 * const 变量名。
常量指针的声明:数据类型 const * 变量名 或者 const 数据类型 *变量名。
常量指针常量的声明:数据类型 const * const 变量名或者 const 数据类型 * const 变量名。
指针常量与常量指针的使用
1.指针常量例子
/*指针常量*//*声明方式*/ int a; int *const b = &a; //const放在指针声明操作符的右侧 /*例子*/int a=0,b=0; int * const p=&a; p = &b;//错误 *p = 5;//正确
2.常量指针例子
/*常量指针*//*声明方式*///1) const int *p;//2) int const *p; /*例子*/int a=0,b=0; int const *p=&a; p = &b;//正确 *p = 5;//错误
3.常量指针常量
/*常量指针常量*//*声明方式*/ const int a = 5; const int * const p = &a; //a值不变,b的指向也不能变 /*例子*/int b = 2;int a = 5;const int * const p = &a;p=&b;//错误 *p=2;//错误
例
int a = 5; const int b = 6; const int *c = &a; // c是指向整形变量a的常量指针 const int *d = &b; // d是指向整形常量b的常量指针 int *const e = &a; // e是指向整形变量a的指针常量 //int *const f = &b; //报错提示 无法将const int*赋值给 int * const int *const g = &a; // g是指向整形变量a的指针常量 const int *const h = &b; // h是指向整形常量b的指针常量 printf("a:%d b:%d\n*c:%d c:%d\n*d:%d d:%d\n*e:%d e:%d\n*g:%d g:%d\n*h:%d h:%d\n",a,b,*c,c,*d,d,*e,e,*g,g,*h,h); a=3; c=&b; //改变c的指向为b c值改变 *c改变 //*c=b; //报错*c是常量 d=&a; //改变d的指向为a d值改变 *d改变 //*d=a; //报错*d是常量 //e=&b; //报错 常量指针指向无法改变 *e=2; //此时a的值已经变为2 e值不变 *e改变也就是a值改变 //g=&b; //报错指针指向无法改变 //*g=1; //报错指向的地址中的值是个常量无法改变 //h=&a; //报错指针指向无法改变 //*h=1; //报错指向的地址中的值是个常量无法改变 printf("改变后\n"); printf("a:%d b:%d\n*c:%d c:%d\n*d:%d d:%d\n*e:%d e:%d\n*g:%d g:%d\n*h:%d h:%d\n",a,b,*c,c,*d,d,*e,e,*g,g,*h,h);
程序的输出结果:
(可以尝试一下把代码中的*e=2注释掉会发生什么)
总结:
指针常量,指向地址不可变,地址中的值可通过指针改变
常量指针,指向地址中的值不可通过指针改变,指向可变
常量指针常量,指向和指向地址的值都不可通过指针改变
附加题
指向常量的指针常量该怎么写?
答案:
const int * const b = &a;//指向常量的指针常量
关于"C语言中指针常量和常量指针的区别是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C语言中指针常量和常量指针的区别是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
常量
指针
指向
地址
变量
例子
数据
类型
语言
内容
错误
方式
知识
内存
就是
篇文章
可变
也就是
代码
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
江西软件开发商家
开展网络安全周活动方案
签订网络安全责任书
篮球软件开发
冰原守卫者不同服务器互通吗
冠顶网络技术有限公司
我国维护网络安全的必要性
comic数据库
电脑服务器被锁定怎么办
武进软件开发商
吉林通信软件开发服务参考价格
广州嘻麦互联网科技有限公司
未来网络技术专业排名
服务器不用ecc内存
跳板机如何连服务器
奉贤区新能源软件开发哪家强
dell t20服务器cpu
neo4j数据库简单用法
商丘市网络安全论坛
花亦山官服是什么服务器
中国网络安全的顶层设计
企业签名打包软件开发
cn游戏服务器
视频服务器机柜布线
软件开发中的幻映需求
数据库约束的创建与管理例题
家用网络安全
旅行社管理信息系统服务器
软件开发有哪些文档
丽水学软件开发工具