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个字节数据,虽然能成功,但危害是显而易见的...