首页 > 编程语言 >C++(指针常量、常量指针)

C++(指针常量、常量指针)

时间:2023-12-24 12:44:45浏览次数:41  
标签:常量 指向 int C++ ptr 变量 指针

在C++中,常量指针和指针常量是两个不同的概念,它们涉及到指针和常量的组合。让我们来详细解释它们的含义:

  1. 常量指针(Constant Pointer):

    • 一个常量指针是指针本身是常量,它指向的内容可以被修改。
    • 一旦指针被初始化指向某个变量,就不能再指向其他变量。
    • 通过指针可以修改所指向的变量的值。
    int x = 10;
    int y = 20;
    
    // 常量指针,指向整数,但指针本身是常量
    const int* ptr = &x;
    
    // 合法,因为ptr指向的内容可以修改
    x = 15;
    
    // 非法,因为ptr本身是常量,不能指向其他变量
    // ptr = &y; // 编译错误
    
    // 合法,因为ptr指向的内容可以修改
    *ptr = 25;
    
  2. 指针常量(Pointer to Constant):

    • 一个指针常量是指针指向的内容是常量,但指针本身可以被修改。
    • 一旦指针被初始化指向某个变量,就可以指向其他变量。
    • 通过指针不能修改所指向的变量的值。
    int x = 10;
    int y = 20;
    
    // 指针常量,指针本身是变量,但指向的内容是常量
    int* const ptr = &x;
    
    // 合法,因为ptr指针本身可以修改
    ptr = &y;
    
    // 合法,因为ptr指向的内容是常量,不能修改
    // *ptr = 25; // 编译错误
    

总结一下:

  • 常量指针:指针本身是常量,指向的内容可以修改。
  • 指针常量:指针本身是变量,指向的内容是常量。

这两个概念在C++中是很有用的,特别是在函数参数、数组等场景中。理解它们有助于正确使用指针并确保数据的安全性。



标签:常量,指向,int,C++,ptr,变量,指针
From: https://www.cnblogs.com/keye/p/17924243.html

相关文章

  • C++出现“printf/cout不明确”的问题的原因和解决方法(转)
    如果你有幸看到这个博客,那么我猜你应该已经碰上这个问题,而且正急着寻求方法,因此,我先把解决方法用最简单的一句话写出来解决方法为:**将文件中原有的usingnamespacestd;删除后保存cpp文件,再加上usingnamespacestd;保存cpp文件。问题即可解决**如果根据上述方法已经解决了这个问......
  • 双指针算法-最长不重复子序列
    思路这里的i才是主要的遍历指针,j是用来剔除元素以满足题目要求的。代码#include<iostream>usingnamespacestd;constintN=1e5+10;intn,res;inta[N],s[N];intmain(){cin>>n;for(inti=0;i<n;i++)cin>>a[i];for(int......
  • Qt/C++控件设计器/属性栏/组态/可导入导出/中文属性/串口网络/拖曳开发
    一、功能特点自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个。拖曳到画布自动生成对应的控件,所见即所得。右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用。独创属性栏文字翻译映射机制,效率极高,可以非常方便拓展其他语言的属性......
  • 【C++】将 C++ 程序 以 Windows Service 服务部署
    服务主函数1)先进行安装your_program.exeinstall2)在进入电脑管理-服务,进行启动3)若要多启动方式,在下面主函数中,进行启动类别判断是服务形式启动还是控制台程序启动int__cdecl_tmain(intargc,TCHAR*argv[])服务代码作为程序入口代码,将自己程序的主函数代码,访入SvcInit函......
  • PTA|C语言|指针
    计算最长的字符串长度本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:intmax_len(char*s[],intn);其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。裁判测试程序样例:#include<stdio.h>#include<string.h>#include......
  • C++简单实现list链表数据结构(一)
    链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域C++STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空......
  • C++知识点总结
    第二章1.基本数据类型int有16位,即两个字节,char只占一个字节。在VisualC++6.0中,对float提供6位有效数字,对double提供15位有效数字,并且float和double的数值范围不同。对float分配4个字节,对double和longdouble分配8个字节。2.常变量关键字const。变量的值在程序运行期间不能改......
  • C++:最大值最小值及其索引
    std::max_element和std::min_element 是C++标准库<algorithm>中的函数,可以得到数组和向量(vector)的最值及其索引intcard[6]={1,2,3,4,5,6}intmaxValue=*max_element(card.begin(),card.end());intminValue=*min_element(card.begin(),card.end());intmaxPositi......
  • C++ --- 函数重载
    什么是函数重载函数重载: 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。函数重载是C++在C语言基础上进行的改进,解决了C语言同名函数无法服务不同类型......
  • C++U5-11-特殊二叉树
    学习目标 完全二叉树:二又树拥有的性质,在完全二叉树中都拥有 性质 练习1 练习2 练习3编程题:[完全二叉树的叶子结点]【算法分析】递归,前序遍历输出。【参考代码】#include<iostream>usingnamespacestd;constintSIZE=1010;structnode{......