首页

文章

C++中的指针和常量引发的问题

发布网友 发布时间:2022-04-20 05:00

我来回答

5个回答

热心网友 时间:2023-05-11 12:07

第一个:char *p = "123456";
char *s = "asdghh";
*s = *p;
你这个之所以会错,是因为指针s指向的是常量字符串 asdghh 而*s=*p相当于改变常量字符串的值,常量是不能改变的,而且常量也不能做左值,所以出错。
第二个:
char a[]="123456";//这个的意思是 在内存充开辟空间 把常量字符串复制到这个空间
char *p = a;//这个说明指针p存储的是数组变量a的地址
char a1[]="asdghh"; //同上
char *s =a1; //同上
*s = *p; // 这句的意思是 把指针p所指向空间的值(这里为数组a)复制到指针s所指向的空间(这里为数组a1)

热心网友 时间:2023-05-11 12:07

char a1[]="asdghh";实际上相当于char a1[7]="asdghh";
定义了一个长度为7的字符数组,注意,这个数组是你自己定义的,所以你能修改它的值。
而char *p = "123456";则仅仅是声明了一个指针变量,这个变量指向了一个常量字符串"123456",而常量字符串的值是不允许修改的。

热心网友 时间:2023-05-11 12:07

在第一个中:
void main()
{
char *p = "123456";
char *s = "asdghh";
*s = *p;
}
语句 *s = "asdghh"; 定义了一个指针变量s,它指向静态存储区的常量区(常量区的内容不可被修改)。所以运行时*s = *p; 你试图改变常量区的内容时,系统会报错。
同理,若执行语句*p = *s; 会报同样的错。

在后面该正确的代码中:
{
char a[]="123456";
char *p = a;
char a1[]="asdghh";
char *s =a1;
*s = *p;
}
也就是说这两句话运行正确:
char *s =a1;
*s = *p;
原因:char a1[]="asdghh"; 实际上相当于 char a1[7]={'a','s','d','g','h','h','\0',}; 编译时 系统会在堆栈区里分配连续的7*sizeof(char)的空间,并将首地址传给数组a1.
所以char *s =a1; 即字符指针变量s同样指向上述的空间首地址,
*s=*p同样可以运行。

综上所述二者的本质区别在:
前者char *s = "asdghh"; 中的字符串存于常量区,不可写

后者char a1[]="asdghh"; 中的字符串存于堆栈区,和普通的变量一样,可读写

热心网友 时间:2023-05-11 12:08

#include<stdio.h>
是你的指针用的不对,不是可读不可读的问题

#include<stdlib.h>
void main()
{
char *p = "123456";
char *s = "asdghh";
s = p;
printf(s);
}

热心网友 时间:2023-05-11 12:09

指针只是存放的地址,没有真正的空间的!而定义一个数组以后,它是有真正的空间的,把指针指向数组后,这个指针指向的是一个有空间的地址,所以就可以可读可写了!我的理解,参考一下吧!
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 绿色的种类有哪些? autofdanger什么意思? 绿色代表什么 C++ auto f = [](CCash &cash1, CCash &cash2){} 绿色代表什么意思 auto f=[](CCase &case1,CCase &case2){};这条语句... 绿色有哪些种类? 绿色有哪些种类呢? 绿色的意义 绿色代表的寓意和意思是什么? 绿色的含义是什么 绿色的含义和象征分别是? 绿色有哪几种绿? 苹果手机ios14怎么截屏 苹果怎么截图怎么设置 i whach 防水吗? 在重庆税务医保缴费显示暂无数据怎么回事 重庆税务公众号医保缴费 为什么重庆税务交不了2022年的医保 重庆今年交职工医保在税务总局交吗,还和银行签协议不 《绿色》歌词 汽车上的AUTO是什么意思啊? 绿色的四种含义 Auto是什么 表示绿色的词语都有哪些 AUTO是什么东西? 绿色都有什么绿 auto如何解决 绿色是什么色彩 我的电脑现在打开C盘和F盘出现AUTO打不开了是不是... 绿色代表什么??? 索尼摄像机 "auto" 按钮是什么意思? 请问绿色代表的意义是什么?、 尼康df单反能用auto镜头吗 右键点C,D,E,F有Auto怎么杀 我电脑D,E,F盘点反键第一个是出现AUTO的字样是什... 我的电脑E,F两个盘符右键有auto 怎么清除? 中了... c.d,f,e盘都中了AUTO的病毒怎么删除? 右键点击本地磁盘F 第一个选项变成了Auto,双击打不开 我的电脑的E F盘双击打不开,右键单击显示第一个是...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com