当前位置: 代码迷 >> C语言 >> [讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...
  详细解决方案

[讨论]char* a = "abc" 和 char a[] = "abc" 之间的区别 ...

热度:312   发布时间:2007-09-19 21:52:31.0
按楼上改了一下还是有错!
----------------解决方案--------------------------------------------------------

愿听9楼详细道来~~~~~~~~~


----------------解决方案--------------------------------------------------------

出异常 ?
*(a+1)='k';


----------------解决方案--------------------------------------------------------
我怎么才能知道你不是KYO那个大色魔?
----------------解决方案--------------------------------------------------------
看我那张清纯的脸,你觉得我像大色魔吗???

况且KYO是谁???
----------------解决方案--------------------------------------------------------

大家别跑题呀!

[此贴子已经被作者于2007-9-19 22:03:09编辑过]


----------------解决方案--------------------------------------------------------
以下是引用HK狼在2007-9-19 21:37:14的发言:
char *a="abc",然后a[1]='k'会有发生运行错误,
这里a是指针变量 a[1] 是什么 当然错了

而如果字符串这样声明:char a[]="abc",a[1]='k'却无错误?
这里a是数组 a[1]='k' 没问题

你需要补补课



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
----------------解决方案--------------------------------------------------------
char *a="sss";
a 指向的常量区,改变常量区的值就会出错

char *a;
a=(char*)malloc(10);
strcpy(a,"sss");
改变a[1]的值就没问题
因为a 指向动态存储区
----------------解决方案--------------------------------------------------------
哦,我明白了char *a="abc"编译器会默认为const char* a="abc",把a当成指向常量字符串的指针,a指向的内容不可以改变,但a本身的值可以改变
----------------解决方案--------------------------------------------------------
char *a="sss";
严格来说这个语句是错的



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
----------------解决方案--------------------------------------------------------

  相关解决方案