字符串、字符数组与指针的问题
(1)#include<stdio.h>
#include<stdlib.h>
char *test()
{
static char str[]="helloworld!"; //为什么此处用char str[]程序有错,而用char *str的时候程序正常运行??
return str;
}
int main()
{
printf("%s",test());
system("pause");
return 0;
}
(2)同样一个程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *test()
{
char str[]="helloworld!";
return str;
}
int main()
{
char str1[100]; (1)
strcpy(str1,test()); (2)
printf("%s",str1); //此时可以正常运行,但是如果上面(1)、(2)两句不要,这句直接改成printf("%s",test()); 为什么就不能正常运行啊??
system("pause");
return 0;
}
书上是这么解释的,说是用char str[]="abcde"这种形式定义的可以修改,而用char *str="abcde"中指针指向的是一个常量字符串,而且字符串是只读,不可修改的,但是指针可以改啊,指针为什么不可以指向其他的地方??
谁这方面学的好一些能详细解释下吗??谢谢!!