这节课我们来讲一讲指针常量和常量指针。
这两个的关系,就跟指针数组、数组指针一样,初学者,很难分的清。
首先是指针常量。 我们听过整型常量、字符常量、字符串常量。整型常量是个不能修改的整数,字符常量是个不能修改的字符。
那指针常量就很好理解了,是个不能修改的指针。
它只能指向字符 'h',如果强行进行p++操作,编译的时候就会报错。
我们称指针p为指针常量。
其实在C语言中,说他是常量不合适,只读变量更合适,就是可以通过其他方式让p指向字符 'e'。
接下来是常量指针。 我们知道整型指针、字符指针。整型指针是指针指向整数,字符指针是指针指向字符,那常量指针就很好理解了,指针指向常量。
如果你想通过p去修改字符串的值,那绝对是不可以的,比如:
总结一些,指针常量是指针本身不能修改,常量指针是指针指向的内容不能修改。
这两个的关系,就跟指针数组、数组指针一样,初学者,很难分的清。
首先是指针常量。 我们听过整型常量、字符常量、字符串常量。整型常量是个不能修改的整数,字符常量是个不能修改的字符。
那指针常量就很好理解了,是个不能修改的指针。
chararr[] = "helloworld";
char*constp=arr;
比如指针p,因为它被const修饰,所以p不能修改。它只能指向字符 'h',如果强行进行p++操作,编译的时候就会报错。
我们称指针p为指针常量。
其实在C语言中,说他是常量不合适,只读变量更合适,就是可以通过其他方式让p指向字符 'e'。
char str[] = "helloworld";
char*constp=str;
char **q = (char **)&p;
(*q)++;
以上代码,可以让指针 p 指向字符'e'。接下来是常量指针。 我们知道整型指针、字符指针。整型指针是指针指向整数,字符指针是指针指向字符,那常量指针就很好理解了,指针指向常量。
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次下载
单片机的结构体和指针等资料说明
本文档的主要内容详细介绍的是单片机的结构体和指针等资料说明包括了:单片机的常量,单片机的变量,构造类型:数组,构造类型:结构体,构造类型:指针
发表于 12-05 17:23
•17次下载
单片机的常量和变量与数组的详细资料说明
本文档的主要内容详细介绍的是单片机的常量和变量与数组的详细资料说明包括了:单片机的常量,单片机的变量,构造类型:数组,构造类型:结构体,构造类型:指针
发表于 12-11 17:36
•13次下载
变量和常量之间的差异
Windows -编程-变量和常量之间的差异 无法更改变量的值可能会让您想起大多数其他语言都有的另一个编程概念:常量。与不可变变量一样,常量是绑定到名称且不允许更改的值,但常量和变量之
发表于 10-19 17:24
•626次阅读
C++中const以及this指针的使用
const 作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(
嵌入式c语言指针指向常量
地址的,原因是字符串为常量,c语言编译器会对一样的常量进行操作,内存中只保留一份copy。ps:c语言中常量是放在.rodata中,.rodata是在.text代码段中。...
发表于 11-29 17:51
•12次下载
String-MCU内存字符串和Flash字符串指针
很多时候,MCU受指今影响,访问Flash和内部RAM时的方法不同,所以编译器在编译Flash数据常量操作和RAM常量操作时的生成的方法也不一样。同样若指针指向Falsh区数据或RAM区数据
发表于 12-02 09:51
•3次下载
评论