[code="java"]
void main()
{
char str = "china";
printf("%c\n",str[1]);
//(str+1) = *(str+2); // 在vc6.0下运行时出错,不明白是什么原因
puts(str);
}
在winTc下是没问题的,在vc6.0下编译和链接都没问题,但是运行的时候,注释的那行出错了,不明白是什么原因,请各位给个提示,谢谢!
[/code]
[code="java"]
void main()
{
char str = "china";
printf("%c\n",str[1]);
//(str+1) = *(str+2); // 在vc6.0下运行时出错,不明白是什么原因
puts(str);
}
在winTc下是没问题的,在vc6.0下编译和链接都没问题,但是运行的时候,注释的那行出错了,不明白是什么原因,请各位给个提示,谢谢!
[/code]
嗯,以下是我的理解:
因为创建数组是不会共享同一个内存空间的!所以即使数组内容一样,也不会存储在同一空间中,除非你刻意赋值!我上面举得例子是:char *x = "xxxxxx"这样的声明,是会共享同一个内存空间,说得明白一点是,举个例子:
char *ptr = "chinc" ;
char *ptr1 = "chinc" ;
printf("%d,%d\n",ptr,ptr1) ;
printf("%d\n",&"chinc") ;
上面输出地值是全部相同的,意思是chinc这个字面字符串就是可以被共享的!下次再出现这个字面字符串时就不用再创建了!就直接到指定的内存中读取就可以!但对于数组却不会,这点你可以自己做实验。
额,可能说的不太明白,呵呵,也许是我的水平有限!!