void test(char * a)
{
*a='w';
a++;
*a='u';
}
void main()
{
char* s="abc"; // char s[]="abc";
test(s);
std::cout < <s;
}
char* s="abc"; 程序会出错;写成char s[]="abc"; 就没问题了。
解答:char* s="abc";
"abc"分配在全局静态数据区,s只是指向"abc"的指针,不让通过test函数改写"abc"的内容
char s[]="abc";
分配在栈上的数组,可以通过test修改字符串数组s的内容
可以引申一下对指针赋值的问题,我查了=,strcopy,istrcopy的使用,
因为=实际就是将右边内容的地址赋给左边
strcpy是c运行时函数,是标准c提供的函数,
lstrcpy是windows api 其实我的理解就是他是继承strcpy而来的.