关于C语言中的指针与数组的问题??

如题:有这样的程序#include<stdio.h>voidfunc(chara[]){a[0]='b';puts(a);}intmain(){char*b="abc";... 如题:有这样的程序
#include<stdio.h>
void func(char a[])
{
a[0]='b';
puts(a);
}
int main()
{
char *b="abc";
func(b);
return 0;
}
为什么这样编译连接都通过,运行时崩溃?
而把 char *b="abc";改为 char b[]="abc";时就能运行呢???
求解!传进func的不都是指向"abc"的指针吗??
展开
 我来答
zxpointer
2011-09-17 · TA获得超过4100个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1204万
展开全部
char *b="abc"; 这句话中的abc是一个字符串常量, 在内存中存放在常量区的,它是不允许修改的
而char b[]="abc"; 这句话中的abc是一个变量,存放在栈区,是允许修改的。
匿名用户
2011-09-17
展开全部
char *b="abc";将b定义成一个指向常数的指针,是不能修改其指向的 ,
而数组的空间是可以修改的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zl5405723
2011-09-17 · 超过24用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:52.8万
展开全部
我是路过做任务的,勿怪啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuyang3456
2011-09-17
知道答主
回答量:5
采纳率:0%
帮助的人:6551
展开全部
指针只能指向地址,不能指向别的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nqjun1
2011-09-18
知道答主
回答量:3
采纳率:0%
帮助的人:5045
展开全部
1.:编译通过是没有语法错误!!!
2.3:把char *b="abc"改为char b[]="abc"能运行是因为,void func()的参数是数组(char a[]),而char *b为指针变量a[0]='b'不是指针指向‘b’的地址而是新开辟内存空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式