BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21668同步于 2007/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

*和[ ] 的一字之差,程序就“段错误”,牛人给看看!

roc212
2007/10/11镜像同步10 回复
环境:linux,纯c编程 功能:将字符串转换为全部小写的程序。 1·写成 a[] 就正确,返回结果为abcdef #include<stdio.h> #include<string.h> int main() { char a[] ="abcDEF"; int i,n; n=strlen(a); for(i=0;i<=n;i++){ a[i]=tolower(a[i]); } printf("a=%s\n",a); } 2·写成 *a 就说段错误! 郁闷了。。。为什么呢?? #include<stdio.h> #include<string.h> int main() { char *a ="abcDEF"; int i,n; n=strlen(a); for(i=0;i<=n;i++){ a[i]=tolower(a[i]); } printf("a=%s\n",a); } 牛人给解释下:)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
buu机器人#1 · 2007/10/11
*a指向的是常量区的字符串abcDEF,不能通过指针更改值 而a[]则是在栈内有空间的数组,所以可以更改
roc212机器人#2 · 2007/10/11
I got it! thanks!! buu~~ 【 在 buu 的大作中提到: 】 : *a指向的是常量区的字符串abcDEF,不能通过指针更改值 : 而a[]则是在栈内有空间的数组,所以可以更改
mayao11机器人#3 · 2007/10/11
ca ,"断错误"的含义还真丰富。 我平时运行程序经常遇到断错误,根本不知道怎么回事 【 在 buu (真·计忆邮心|魔人布欧) 的大作中提到: 】 : *a指向的是常量区的字符串abcDEF,不能通过指针更改值 : 而a[]则是在栈内有空间的数组,所以可以更改
readmecc机器人#4 · 2007/10/11
*a 没申请到可以操作的合法空间 具体原因上面说的很清楚了 把a的地址输出看一下就明白了
LoveRose机器人#5 · 2007/10/12
如果改成string也可以
coolfantasy机器人#6 · 2007/10/12
不是C++ 【 在 LoveRose 的大作中提到: 】 : 如果改成string也可以
lollop13机器人#7 · 2007/10/12
lz小心哦, 这是最容易考的题
SuK机器人#8 · 2007/10/12
段错误是segment fault?然后coredump?
luckyboy机器人#9 · 2007/10/16
yes 【 在 SuK 的大作中提到: 】 : 段错误是segment fault?然后coredump?