中易网

一道C语言基础问题。为什么代码通过了编译却不能执行,执行时显示“内存不能为written”?代码如下:

答案:4  悬赏:10  
解决时间 2021-11-17 10:17
#include
void main()
{
char a;
printf("请输入需加密的字符:\n");
scanf("%c",a);
printf("%d\n",a);
}
最佳答案
#include
void main()
{
char a;
printf("请输入需加密的字符:\n");
scanf("%c",a); //初学者最容易犯的错,这里是scanf("%c",&a);切记~
printf("%d\n",a);
}
全部回答
scanf("%c",&a);
scanf("%c",a); 少了取地址符 采纳我哦
如果仔细看scanf的定义,后面的参数需要给出输入数据的地址,也就是存放输入数据的存储区的地址,这个地址与变量a是不同的。 定义了变量a,以后在程序中使用a时编译器就要取变量a对应数据区的内容来使用。如程序中printf语句中a的用法就是取a中存放的数据来输出。 但是scanf不需要知道a的内容而是要修改a的内容,那么就需要提供a的地址:&a,所以写成scanf("%c",&a);即可。 如写成scanf("%c",a);时,编译程序可以编译,但它认为你要把a的内容当作一个地址用来存放输入的字符,由于你在开设变量a时并未赋值,所以a中存放一个随机数据,有可能是0,那么程序在试图将输入的字符向0地址存放时会受到操作系统的限制,返回这个地址是只能读不能写的,所以得到题目中的错误提示。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
北蔡镇在哪里的?
金山区气象局地址在什么地方,想过去办事
长江音乐艺术培训怎么去啊,我要去那办事
冰点脱毛大腿怎么分区打
上海市奉贤区南桥有什么环境好点的面积够大的
大连二七广场的三宝海鲜是在哪条街附近(具体
想知道隆胸是怎么做的,最少需要多少钱?
tplink886n无线路由器怎么安装设置
北京燃气灶打不着火有什么维修方法?
宁波海曙区天一广场到普陀山怎么走
怡禾康小巧手按摩枕好不好用?
21寸液晶屏升降器价格怎么样?
请问谁知道110联网报警器在郑州哪有卖的?
鸡皮含有胆固醇吗?鸡的那部分含胆固醇最高?
脚被钉子扎了,第2天去打破伤风针行不,还有
推荐资讯
山东省临沂市河东区银桥金居的房子怎么样?质
校园一角写景,用上不必说....也不必说......
有一个28岁的小伙和一个70岁的老太太结婚
怀孕要几天验孕棒才能验出来?
天猫卖家答应发货却没发,算违背承诺吗
用什么方法去除黑眼圈?
后门对后门怎么化解风水
怀孕能不能吃桃子?
上海华硕维修站有哪些?
水冷空气压缩机哪个厂家有
阳光房顶棚的窗帘怎么做?
最简单的春节一部份手抄报图片简笔画该画什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?