char* a = "string1";
char b[] = "string2";
gets(a); //试图将读入的字符串保存到a指向的区域,运行崩溃!
gets(b) //OK
这个运行错误
而
char* a = "string1";
char b[] = "string2";
a = b; //a,b指向同一个区域
gets(a) //OK
printf("%s", b) //会出现gets(a)时输入的结果
这个运行正确
麻烦讲解一下,谢谢
char* a = "string1";是一个常量字符串,不能进行修改,故而第一个gets(a); 错误
然而a = b;后a指向了b的空间地址,是分配的b[8],故而gets(a) //OK
因为a和b是同一个区域,所以printf("%s", b) //会出现gets(a)时输入的结果