中文版 | English

网站首页 | 个人作品 | 博客 | 给我留言 | 经典分享 | 友情链接 | 黑白人生


指针与数组网上讨论的一个话题

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而来的.

上一篇: 自己做了个工具盘[软件收集中]
下一篇: 这周末将C++的类学了个遍,回头看看asp的类