关于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"的指针吗?? 展开
#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"的指针吗?? 展开
5个回答
2011-09-17
展开全部
char *b="abc";将b定义成一个指向常数的指针,是不能修改其指向的 ,
而数组的空间是可以修改的
而数组的空间是可以修改的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是路过做任务的,勿怪啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针只能指向地址,不能指向别的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.:编译通过是没有语法错误!!!
2.3:把char *b="abc"改为char b[]="abc"能运行是因为,void func()的参数是数组(char a[]),而char *b为指针变量a[0]='b'不是指针指向‘b’的地址而是新开辟内存空间。
2.3:把char *b="abc"改为char b[]="abc"能运行是因为,void func()的参数是数组(char a[]),而char *b为指针变量a[0]='b'不是指针指向‘b’的地址而是新开辟内存空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询