首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ 指针常量与常量指针

吐槽一下: 指针常量与常量指针的翻译就好比机器学习中Regularization翻译成正则化一样,讲真,正则化这个说法确实要比规则化显得高端些,但是到了理解的时候,还是要按照规则化理解。...,比如我们有一个子函数是想打印一个数组,那么我们可以将函数声明写成这样: void printfarr(const int *arr,int n); 如此,当主函数中调用该子函数,并打印主函数中的变量array.../合法 p = &b;//不合法 以上就是所谓的指针常量与常量指针所包含的概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类和第二类到底哪个叫做指针常量,那个叫做常量指针呢?...说实话我都不知道指针常量与常量指针的叫法是不是够官方,我只能说概念非常混淆,而且其实它的两个名字并不重要,关键的是声明方式与作用的区别。...但是在《C Primer Plus》中将第一类叫做指向常量的指针,也就是在文章开头提到的pointer to const,那么第二类也就是const pointer了,但是这样一来,他就已经和百度百科的说法反了

1.7K70

【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针

常量指针 vs. 指向常量的指针 在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。...复杂示例 7.1 常量指针在多线程环境中的应用 在多线程编程中,常量指针可以用来保护共享资源的地址不被线程修改,确保线程安全。...9.2 问题:如何在C++中处理常量指针和指向常量的指针? 解决方案: C++特性:在C++中,可以使用const和constexpr来定义常量指针和指向常量的指针。...constexpr提供了更强的编译时常量保证。 类成员:在C++类中,可以使用常量成员函数来确保对象状态不被修改。...结束语 本节内容已经全部介绍完毕,希望通过这篇文章,大家对C语言中常量指针和指向常量的指针有了更深入的理解和认识。

20310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++:18---const关键字(附常量指针、指针常量、常量指针常量)

    int b=a; //正确const int c=10; //正确 ③const修饰的变量可以赋值给其他值 const int a=10;int b=a;//正确 ④可以有常量引用 int a=10...②其他文件的全局变量会报错,显示重定义 方法: 在demo.h文件中extern const int a;//声明 在demo.c文件中extern const int a=1;(extern可省略)...指向可以改,但是不能通过该指针改变所指向的值 这种类型的const也被称为“底层const”:表示指针所指向的值是个常量 指针常量:(指针的常量)。...) 不可以改变指针常量的指向,因为指针自身是个常量 int a = 1;const int b = 2;int c = 3; int* const pa = &a; //正确,a是非常量int* const...pb = &b; //错误,b是常量 *pa = 10; //正确,可以修改指向对象的值pa = &c; //错误,不能修改pa的指向(因为指针自身是个常量) 常量指针常量,有如下规则: 可以使用常量

    1.4K10

    常量指针,指针常量的区别是什么_指针常量与常量指针

    定义: 又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值。...特点: 常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改; 常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值; 指针还可以指向别处,因为指针本身只是个变量...指针常量的值是指针,这个值因为是常量,所以不能被赋值。 特点 它是个常量!...指针所保存的地址可以改变,然而指针所指向的值却不可以改变 指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化; 表示形式: int* const p1; 三、两者区别 //——-...//p2 = &b; //Error,因为p2是const 指针,因此不能改变p2指向的内容 补集一个: //——-指向常量的常量指针——-// const int* const p3 =

    1.2K30

    c++常量指针和指针常量_指针指向二维数组

    ** 一:常量 ** 常量指针,指针常量,常量指针常量 a)常量定义:不可修改的值,例如250,’A’ b)const关键字功能:将变量常量化,四种形式 (1)const可以修饰普通变量,一旦修饰该变量...,该变量就当做常量看待,不可再更改 Const int a=250;//将变量a常量化 A=200;//gcc编译器报错 (2)常量指针:不能通过指针变量来修改指向的内存区域的数据,主要目的是保护数据不可篡改...;//gcc编译报错 (3)指针常量(不太用) 指针永远指向一块内存区域,不能再指向别的内存,但是可以修改指针内存的值 例如: int a=100; int * const pa=&a;//定义指针常量...*pa=300;//可以 printf("a=%d\n",*pa); int b=200; *pa=&b;//不可以,gcc报错 printf("a=%d\n",*pa); (4)常量指针常量:指针本身和指向的内容都不可修改...4个字节,十六进制每两个数字是一个字节,左是高字节,右是低字节 ** 如何做到操作访问4字节中的 某1个字节或者某2个字节数据呢?

    73620

    指针常量和常量指针的区别_指针常量能指向常量吗

    大家好,又见面了,我是你们的朋友全栈君。 1、指针常量——指针类型的常量(int *const p) 本质上一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。...在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。在定义的同时必须初始化。...int *p, int const *p) 常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。...在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。...错误,指针常量不能在定义后赋值 const int * const ptr6 = &m; // 指向“常量”的指针常量,具有常量指针和指针常量的特点,指针内容不能改变,也不能指向其他地方,定义同时要进行初始化

    1.9K20

    指针指向常量_常量指针的四种

    const关键字 指针常量和常量指针都离不开const关键字,我们先来了解一下什么是const关键字,const被用来定义常量,如果将一个变量加上const关键字,则被修饰的变量的值将无法改变。...下面是const修饰变量的用法: const int a = 6; 或者 int const a = 6; 此时变量a的值无法改变,只能访问,不能改写 指针常量 指针本身是一个常量,不能更改指针指向的地址...p = &a; *p = 200; // p = &b; 错 // p指针指向的地址不能更改为b的地址,否则是不对的 cout 指针p指向的值为:"...p指向的值为:200 a的值为:200 b的值为:200 常量指针 常量指针指的是一个常量,所以指针指向的值是不能改变的,但是指针指向的地址是可以改变的 #include using...:200 a的值为:100 b的值为:200 区别 注意指针常量和常量指针的区别,指针常量只能改变值,不能改变地址,常量指针只能改变地址,不能改变值。

    66610

    【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    出现在 * 左边时, 指针指向的数据为常量, 指向的数据不可改变; 右指 ( 指针常量 ) : const 出现在 * 右边时, 指针地址本身是常量, 指针地址不可改变; 指针常量 : 表示该指针本身是一个常量...; 常量指针 : 表示指向一个常量的指针 ; IV ....语言中 , 如果要让函数的参数可以将结果返回 , 则必须使用指针作为参数 ; C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 ,...引用 与 指针 对比 ---- 引用与指针的相同点 : 都具有地址的概念 ; ① 指针 : 指针指向内存中的一块空间 , 指针变量的内容是一个内存地址 ; ② 引用 : 引用是变量的别名 , 即某块内存空间的别名..., 指针指向的地址 , 以及 地址中的数据 都是可变的 ; 引用的变量值内容可变 , 变量的地址不可变 ; ② 是否可以为空 : 指针可以为空 , 但是引用必须不能为空 , 因其在声明时必须进行初始化操作

    1.2K10

    常量指针和指针常量的详解一样吗_指针是常量还是变量

    说一下 常量指针和指针常量 的区别。 常量指针   指向常量的指针,也就是说指针指向的对象是常量,指向的常量不能修改。指针不是一个常量, 可以把指针指向别一个常量。...不可以对指向的内容做修改: *p = 3; // 错误,常量指针不变的常量,如果指针指向了某个地址,在解引用后不能去修改指针变量的值 指针常量   指针指向的地址不可以改变,地址的内容可以通过指针改变...指针常量在定义时必须赋值。...不能对指向的地址进行修改: p = &b; // 错误,指针指向的地址不可以改变,地址的内容可以通过指针改变 我们也可以这样记 const 在谁前边谁就不可以修改: 常量指针 : const 在指针前边...指针常量 : const 在变量前边,我们就不可以修改指针的地址。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    62620

    C语言结构体指针_C语言函数返回结构体指针

    就类似于sql中的存储一样,随着语言层次的增高封装性是越来越大的。...); } 对于结构体的基础语法说完了,下面来说结构体指针 结构体指针 一个结构体变量的指针就是该结构体变量所占据内存段的起始地址。...可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。 同时指针变量也可以用来指向结构体数组中的元素。...与前面讨论的各类指针变量相同,结构体指针变量也必须要先赋值才能使用 赋值就是把结构变量首地址赋予该指针变量,不能把结构名赋予该指针变量。...在C语言中不允许动态数组类型。例如:a[n]就是错误的,必须要用一个实际的数字表示数组长度,但是在实际开发中,往往会发生这种情况,即所需要的内存空间取决于实际输入的数据,而无法预先确定。

    3.6K30

    C语言 | 结构体指针

    C语言指向结构体变量的指针 在C语言中,指向结构体对象的指针变量既可以指向结构体变量,也可指向结构体数组中的元素。 指针变量的基类型必须与结构体变量的类型相同。...C语言中允许 (*p).num用p->num来代替 ->代表一个箭头 p->num表示p所指向的结构体变量中的num成员 C语言指向结构体数组的指针 (++p)->num 先使p自加1,然后得到p指向的元素中的...(p++)->num 先求的p->num的值,然后再使p自加1。 C语言用结构体变量和结构体变量的指针作函数参数 用结构体变量的成员作参数,用法和用普通变量作实参是一样的,属于“值传递”方式。...用指向结构体变量(或数组元素)的指针作实参,将结构体变量的地址传给形参。...C语言使用结构体指针输出生日 #include #include struct Age {     int year;     int month;     int

    2.2K30

    深入探究C语言中的常量指针与野指针概念及其应用

    常量指针(Constant Pointers) 在C语言中,const关键字用于声明常量,而野指针则是一种危险的指针类型。下面将详细解释这两个概念及其应用。...//在C++中,const修饰的变量就是常量 //a = 20; 错误,a修改不了 //int arr[a]; 错误 a不算常量值 printf("%d\n", a); return...0; } 在这个示例中,我们声明了一个名为a的整型常量,并将其初始化为10。...总的来说,野指针是C/C++编程中的一个常见问题,它们可能导致程序不稳定、数据损坏和内存泄漏等严重问题。因此,理解野指针的危害并采取适当的预防措施是非常重要的。...例如,在函数参数中传递一个指向常量的指针,这样在函数内部就不能修改这个数据。 野指针:避免使用未初始化的指针和已经释放的内存地址的指针,以减少程序出错的风险。

    20510

    C++ 中 const 和 constexpr关键字解析:常量、函数和指针

    num) { // 错误,表达式必须是可修改的左值,意思就是参数num是个常量,无法修改 num = 3; } 修饰指针 虽然指针也是一种变量,不过当const与指针出现在一起的时候...,位置的不同会发生不同的作用,所以单独拎出来讲 // 第一种情况:指针常量 int a = 2; // const作用:使其无法通过指针来修改变量 const int *p = &a; // 错误,...,通常用于函数的参数列表中,因为我们知道在C++中函数参数有3中传递方式,分别是值传递,指针传递(或者叫地址传递),引用传递,前两种在传递时都会发成拷贝行为 指针本身也是一个变量,在32位操作系统下占用...是C++11中引入的一个关键字,它的作用主要是用来修饰一些函数和变量,使其成为常量表达式,从而在编译器就可以进行计算,进一步提高程序运行期的效率 常量表达式:指的是有一个或多个常量组成的表达式,在实际开发中经常会接触到常量表达式..., 44}; // 33 cout << arr[2] << endl; 修饰普通函数 constexpr还可以用于修饰函数的返回值,在C++11中被constexpr修饰的函数只能是非void

    98420

    C语言结构体与结构体指针的使用

    C语言结构体与结构体指针的使用 tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体指针了,所以就整理一下这些基础知识 c语言结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合...说的通俗一点就是一个集合。c语言是一门面向过程的编程语言,而结构体的使用在某些层次上跟面向对象有点异曲同工之处了。下面回归正题,学习一下结构体以及结构体指针的知识。...,结构体名是一种类型,不能被当成变量名来使用 变量名声明方法: 1)struct 结构体名 结构体变量名; 2)直接在定义结构体的时候添加变量名的声明 //在main()中定义及初始化 struct...二、结构体指针的使用 1.结构体指针的定义方法 1)struct 结构体名 *指针; 2)直接在定义结构体的时候添加结构体指针的声明 //在main()方法中定义 struct student...c\n", (*p).num, (*p).name, (*p).sex); 1234 看了上面的基础知识是不是觉得比较简单:),下面让我们来分析一下两个特殊的结构体指针访问方法:) 1)p

    2.1K10

    【C++】C++ 类中的 this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

    一、常量成员函数 1、const 修饰成员函数分析 在 C++ 类中 , 普通的非静态成员函数 , 可以使用 const 进行修饰 , 在 下面的 Student 类中 , 定义了 void fun(int...fun 函数的 第一个参数 Student* pThis 指针指向的内存空间 ; C++ 编译器会将 void fun(int age, int height) 函数转为对应的 C 语言函数 Student_fun...如果 成员函数 被 const 关键字 声明为 常量成员函数 , 则在该函数中 不能修改 类对象中的 任何成员变量 ; class Student { public: void fun(int age...fun 函数的 第一个参数 Student* pThis 指针指向的内存空间 和 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int...fun 函数的 第一个参数 Student* pThis 指针指向的内存空间 和 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int

    23020

    9.3 C语言结构体指针

    01指向结构体变量的指针 1、指向结构体对象的指针变量既可以指向结构体变量,也可指向结构体数组中的元素。 2、指针变量的基类型必须与结构体变量的类型相同。...3、C语言中允许把(*p).num用p->num来代替,“->”代表一个箭头,p->num表示p所指向的结构体变量中的num成员。...02 指向结构体数组的指针 1、(++p)->num,先使p自加1,然后得到p指向的元素中的num成员值。 2、(p++)->num,先求的p->num的值,然后再使p自加1。...03用结构体变量和结构体变量的指针作函数参数 1、用结构体变量的成员作参数。用法和用普通变量作实参是一样的,属于“值传递”方式。应当注意实参与形参的类型保持一致。 2、用结构体变量作实参。...3、用指向结构体变量(或数组元素)的指针作实参,将结构体变量的地址传给形参。 C语言 |求3*4矩阵中最大的元素值及行列 更多案例可以go公众号:C语言入门到精通

    6532925

    【C++】C++ 类中的 this 指针用法 ① ( C++ 类中的 this 指针引入 | this 指针用法 | 代码示例 )

    一、C++ 类中的 this 指针 1、C++ 类中的 this 指针引入 在 C++ 类中 , this 指针 是一个特殊的指针 , 由系统自动生成 , 不需要手动声明定义 , 在类中的每个 非静态成员函数...中 , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 的指针 , 也就是调用 该成员函数 的 实例对象 的 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针是类内部使用的指针 , 使用 this 可以访问 实例对象 中 的所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 类中的...this 指针用法 C++ 类中的 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 的指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 中 , 直接使用如下语法 , 访问 本实例对象 中的 非静态成员变量 ; 先获取指针指向的数据 然后访问数据中的成员变量 ; (*this).成员变量名 在 C++

    33820

    C++指向结构体变量的指针

    C++通过指向结构体变量的指针引用结构体变量中的成员 C++中,一个结构体变量的指针就是该变量所占据的内存段的起始地址,指针变量也可以用来指向结构体数组中的元素。 ...C++提供了指向结构体变量的运算符->,例如: p->num;//表示指针p当前指向的结构体变量中的成员num p->num 和(*  p).num 等价,同样,p->namep->name等价于(*p...p->n;//得到p指向的结构体变量中的成员n值。 p->n++;//得到p指向的结构体变量中的成员n的值,用完该值后使它加1。...++p->n;//得到p指向的结构体变量中的成员n的值,并使之加1,然后再使用它。 经典案例:C++指向结构体变量的指针。...C++指向结构体变量的指针 更多案例可以go公众号:C语言入门到精通

    2.9K118

    【C语言】指针与结构体

    结语 ✍前言 指针和结构体这两块内容是非常重要的,可以说是C语言的重点内容了,同时,如果学习C语言版的数据结构,我们可以知道,基本所有的数据结构都是建立在结构体之上的,以及相关操作也要用到指针,指针和结构体也是...C语言的特点,对于一些面向对象的语言来说,如java就没有指针和结构体这种说法存在了。...基于此,我觉得有必要写这一篇博客,希望通过这篇博客让你对指针和结构体有一点的理解,本篇博客偏基础 ---- 指针 什么是指针 指针是内存中一个最小单元的编号,也就是地址 平时口语中说的指针...,把地址可以存放到一个变量中,这个变量就是指针变量 我们在来通过代码的形式理解: 总结: 指针变量,用来存放地址的变量。...那指针也有不同的类型,要将&num(num的地址)保存到p中,我们知道p就是一个指针变量,我们给指针变量相应的类型。

    84920
    领券