0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈指针常量和常量指针

学益得智能硬件 来源:学益得智能硬件 2023-02-21 09:27 次阅读
这节课我们来讲一讲指针常量和常量指针。
3f196e94-b10e-11ed-bfe3-dac502259ad0.png这两个的关系,就跟指针数组、数组指针一样,初学者,很难分的清。
首先是指针常量。3f6ef8c8-b10e-11ed-bfe3-dac502259ad0.png  我们听过整型常量、字符常量、字符串常量。整型常量是个不能修改的整数,字符常量是个不能修改的字符。
那指针常量就很好理解了,是个不能修改的指针。
chararr[] = "helloworld";
char*constp=arr;
比如指针p,因为它被const修饰,所以p不能修改。407d846e-b10e-11ed-bfe3-dac502259ad0.png

它只能指向字符 'h',如果强行进行p++操作,编译的时候就会报错。
我们称指针p为指针常量。
其实在C语言中,说他是常量不合适,只读变量更合适,就是可以通过其他方式让p指向字符 'e'。
char str[] = "helloworld";
char*constp=str;


char **q = (char **)&p;
(*q)++;
以上代码,可以让指针 p 指向字符'e'。
接下来是常量指针。40df1882-b10e-11ed-bfe3-dac502259ad0.png  我们知道整型指针、字符指针。整型指针是指针指向整数,字符指针是指针指向字符,那常量指针就很好理解了,指针指向常量。
char *p = "helloworld";
比如这样的代码。字符串"helloworld"存放在只读数据区,我们一般称它为字符串常量,指针p指向这个字符串,所以就可以把p称作常量指针。
const char *p = "helloworld";
在语句的前面加上const就更能说明问题了。

如果你想通过p去修改字符串的值,那绝对是不可以的,比如:
*p='a';
编译的时候就会报错。

总结一些,指针常量是指针本身不能修改,常量指针是指针指向的内容不能修改。
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128669
  • 字符
    +关注

    关注

    0

    文章

    229

    浏览量

    24888
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70361
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595

原文标题:指针常量和常量指针

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Go语言常量的声明

    在 Go 语言中, 常量 表示的是固定的值,常量表达式的值在编译期进行计算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的数据类型只可以是
    发表于 07-20 15:24 275次阅读

    指针到底能不能修改其指向的常量字符串?

    1.指针到底能不能修改其指向的常量字符串?今天做一个字符串右移函数时,直接使用指针来修改字符串常量的值出现了奇怪运行时错误。代码如下:[tr=transparent]#include&
    发表于 03-14 17:03

    嵌入式c语言指针指向常量相关资料分享

    地址的,原因是字符串为常量,c语言编译器会对一样的常量进行操作,内存中只保留一份copy。ps:c语言中常量是放在.rodata中,.rodata是在.text代码段中。...
    发表于 01-24 06:32

    函数指针常量和函数指针变量分清楚了吗

    有三点收获1. 将一个有static 静态变量的函数变成了一个可重入的函数2. 函数指针常量 和 函数指针变量分清楚了3. 通过实例了解到了什么时候需要定时回调函数传入参数
    发表于 02-28 06:22

    java 常量池静态变量详解

    Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 所谓静态常量池,即*.class文件中的常量池,class文件中的
    发表于 09-27 13:01 10次下载
    java <b class='flag-5'>常量</b>池静态变量详解

    单片机的结构体和指针等资料说明

    本文档的主要内容详细介绍的是单片机的结构体和指针等资料说明包括了:单片机的常量,单片机的变量,构造类型:数组,构造类型:结构体,构造类型:指针
    发表于 12-05 17:23 17次下载
    单片机的结构体和<b class='flag-5'>指针</b>等资料说明

    单片机的常量和变量与数组的详细资料说明

    本文档的主要内容详细介绍的是单片机的常量和变量与数组的详细资料说明包括了:单片机的常量,单片机的变量,构造类型:数组,构造类型:结构体,构造类型:指针
    发表于 12-11 17:36 13次下载
    单片机的<b class='flag-5'>常量</b>和变量与数组的详细资料说明

    变量和常量之间的差异

    Windows -编程-变量和常量之间的差异 无法更改变量的值可能会让您想起大多数其他语言都有的另一个编程概念:常量。与不可变变量一样,常量是绑定到名称且不允许更改的值,但常量和变量之
    发表于 10-19 17:24 626次阅读

    C++中const以及this指针的使用

    const 作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量指针(pointer to const)和自身是常量指针
    的头像 发表于 09-23 11:39 1750次阅读

    嵌入式c语言指针指向常量

    地址的,原因是字符串为常量,c语言编译器会对一样的常量进行操作,内存中只保留一份copy。ps:c语言中常量是放在.rodata中,.rodata是在.text代码段中。...
    发表于 11-29 17:51 12次下载
    嵌入式c语言<b class='flag-5'>指针</b>指向<b class='flag-5'>常量</b>

    String-MCU内存字符串和Flash字符串指针

       很多时候,MCU受指今影响,访问Flash和内部RAM时的方法不同,所以编译器在编译Flash数据常量操作和RAM常量操作时的生成的方法也不一样。同样若指针指向Falsh区数据或RAM区数据
    发表于 12-02 09:51 3次下载
    String-MCU内存字符串和Flash字符串<b class='flag-5'>指针</b>

    C语言的常量-1

    在C语言中,有一些数据的值在程序运行的过程中是不可以改变的,我们便称这种数据为常量。同样的,因为我们要处理各种各样复杂的数据,常量也有各种各样的数据类型。
    的头像 发表于 02-21 15:00 690次阅读
    C语言的<b class='flag-5'>常量</b>-1

    C语言的常量-2

    在C语言中,字符型常量是最特别的一种常量。他的特别之处在于我们需要对其使用指定的定界符对其进行限制。定界符为 ‘’ 。字符型常量可以分为两种,一种是字符常量,另一种是字符串
    的头像 发表于 02-21 15:02 418次阅读
    C语言的<b class='flag-5'>常量</b>-2

    指针是什么

    指针是什么? 1.1 浅谈指针 理解指针的 两个要点: 指针是内存中一个最小单元的编号,也就是地址; 平时口语中说的
    的头像 发表于 11-24 15:50 1275次阅读
    <b class='flag-5'>指针</b>是什么

    西门子博途:全局用户常量的规则

    常量值可以通过用户常量的帮助保存。通常,控制器中有 OB、FC 和 FB 的局部常量和整个用户程序的全局常量
    发表于 01-16 09:28 408次阅读
    西门子博途:全局用户<b class='flag-5'>常量</b>的规则