S1,S2理应可以复制,至于S3,S4肯定复制不了,因为S3未分配空间所以复制不了,S4指向的是字符串常量,字符串常量是不可以修改的。
段错误核心已转储
看到这句话我想冒昧问一下,你是在用LINUX吗。
建议你看下strcpy的定义:
原型声明:extern char *strcpy(char* dest, const char *src);
头文件:#include
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
src地址开始且含有NULL结束符的字符,注意这句话。。
s1、s2可以
s3、s4不可以
---------------------------
s1、s2在栈区,是可以的
s3是非法指针,不可以
s4在静态区,不可以
s3是可以的,但是这样导致了溢出,只定义了指针,但是没有给指针分配空间,s4是指向常量的指针,所以无法赋值
只有S3,S4是不可往里复制的.其它的都是合法和正确的.
S3是你给任意地址处复制东西,S4是你给常量区复制内容.