当前位置: 首页 > news >正文

C语言高频面试题——常量指针与指针常量区别


1. 常量指针(Pointer to Constant)

定义:

常量指针是指向一个常量数据的指针,即指针指向的内容不能通过该指针被修改。

语法:
const int* ptr;

或者:

int const* ptr;
解释:
  • const修饰的是指针指向的内容(即int),表示指针指向的数据是只读的。
  • 指针本身可以改变指向其他地址,但不能通过该指针修改所指向的值。
示例代码:
int a = 10, b = 20;
const int* ptr = &a;// 错误:不能通过ptr修改a的值
// *ptr = 30; // 编译错误// 正确:可以改变指针的指向
ptr = &b; // ptr现在指向b
总结:
  • 指针可以指向不同的地址
  • 不能通过指针修改所指向的值

2. 指针常量(Constant Pointer)

定义:

指针常量是一个固定的指针,指针本身的值(即指向的地址)不能改变,但可以通过该指针修改所指向的内容。

语法:
int* const ptr = &a;
解释:
  • const修饰的是指针本身,表示指针一旦初始化后,其指向的地址不能改变。
  • 可以通过该指针修改所指向的值。
示例代码:
int a = 10, b = 20;
int* const ptr = &a;// 正确:可以通过ptr修改a的值
*ptr = 30; // a现在变为30// 错误:不能改变指针的指向
// ptr = &b; // 编译错误
总结:
  • 指针的指向地址固定,不能改变
  • 可以通过指针修改所指向的值

3. 两者的组合:指向常量的指针常量

如果同时限制指针本身的值和指针指向的内容都不能改变,可以使用以下语法:

语法:
const int* const ptr = &a;
解释:
  • 第一个const修饰的是指针指向的内容,表示内容不可修改。
  • 第二个const修饰的是指针本身,表示指针的指向地址不可改变。
示例代码:
int a = 10, b = 20;
const int* const ptr = &a;// 错误:不能通过ptr修改a的值
// *ptr = 30; // 编译错误// 错误:不能改变指针的指向
// ptr = &b; // 编译错误
总结:
  • 指针的指向地址固定,不能改变
  • 不能通过指针修改所指向的值

4. 总结对比

特性常量指针 (const int* ptr)指针常量 (int* const ptr)指向常量的指针常量 (const int* const ptr)
指针指向的地址是否可变
指针指向的内容是否可变

相关文章:

  • 文档处理控件Aspose.Words 教程:在 Word 中删除空白页完整指南
  • 【C++游戏引擎开发】第19篇:Compute Shader实现Tile划分
  • Cursor可视化大屏搭建__0420
  • 软件功能测试和非功能测试有什么区别和联系?
  • 【同济】高等数学6.7.8版答案
  • 1+X: Python程序开发职业技能等级要求(初级)练习资料分享
  • 软件工程师中级考试-上午知识点总结(下)
  • 基于OKR的企业管理数字化实践——以围棋教育机构流程优化为例
  • 【数字图像处理】图像纹理分析
  • 基于STM32的HX711货物称重系统
  • QT文件和文件夹拷贝操作
  • NetApp ONTAP 9 故障磁盘更换操作指南
  • 《零基础入门学习Python》
  • OpenGL shader开发实战学习笔记:第十二章 深入光照
  • Linux指令合集
  • C++ STL:从零开始模拟实现 list 容器
  • ACWing——算法基础课
  • 棉花糖实验新解
  • Linux-scp命令
  • 3DMAX 常用渲染器对比及渲染 101 云平台优势
  • 上海市政府常务会议部署多措并举促进消费,提高居民收入,减轻家庭负担
  • 王毅同印尼外长苏吉约诺会谈
  • 中保协:当前普通型人身保险产品预定利率研究值为2.13%
  • 非法收受财物2.29亿余元,窦万贵受贿案一审开庭
  • 北京航空航天大学强基计划今年新增4个招生培养方向
  • 海外需求增长推动价格飙升,正丹股份去年净利润暴增119倍