【C】浅谈strcpy

初学者肯定吃过strcpy的亏,有时候编译明明通过的,运行时候就崩掉了,这是为什么呢?

 

    下面给大家看一个例子

    运行环境:操作系统win7, 编译器VC6.0

    

#include <stdio.h>
#include <string.h>
int main()
{
     char str1[]="dest", *str2="dest";

     strcpy(str1,"src");
     strcpy(str2,"src");
     printf("%s\n", str1);
     printf("%s\n", str2);

     return 0;
}

 

 

    这个程序就是编译通过但是运行失败的一个例子。其实这涉及到了运行时内存分配问题。

    str1是字符数组,分配在栈区,因而可以操作。而str2指向常量区,所以不可以操作。

 

    不信可以注释掉其中一部分试试

posted @ 2012-10-20 20:21  陆草纯  阅读(240)  评论(0编辑  收藏  举报