首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char*的有关问题

2012-03-07 
char*的问题char*sp char*s1(char*)malloc(sizeof(char))strcpy(s,ss )//会出错,换成s1则没有问

char*的问题
char*   s   =   "p ";
        char*   s1   =   (char*)malloc(sizeof(char));
        strcpy(s,   "ss ");   //会出错,换成s1则没有问题
        printf(s);  

以上,STRCPY第一个参数为S时会出错,S1时则没有问题
哪位能详解一下是怎么回事吗?这两个指针有啥不同?

另外,如果STRCPY第一个参数换成S1,虽然执行时没有问题,是不是字符数组已经越界,可能已经破坏了其它数据了?

谢谢!

[解决办法]
你越界了,另外
char* s = "p ";应该写成 const char* s = "p ";
[解决办法]
char* s = "p ";
char* s1 = (char*)malloc(sizeof(char));
strcpy(s, "ss "); //会出错,换成s1则没有问题
printf(s);
===========================================================
晕,两个都有错误〉。。。
1、s是指向字符串常量区的指针,该地址段为不能修改,而strcpy(s, "ss "); 肯定会出错。就算是可以的话,也越界了。
2、显然是越界,s1只有1个长度空间,而试图复制3个字节数据,虽然能成功,但危害是显而易见的...

热点排行