题目非常简单,
int
main()
{
char ch;
char * pch =& ch;
strcpy(pch, " hello " );
printf( " %s " ,pch);
}
{
char ch;
char * pch =& ch;
strcpy(pch, " hello " );
printf( " %s " ,pch);
}
上述代码输出结果。
当时我看到这个代码的时候,首先感觉到这个代码有问题的。因为pch是指向只有一个字符的的字符指针的,但是在strcpy中却用一个字符串给这个指针赋值了。由于指针可以操作内存的特点,知道肯定能将hello写入内存中的,所以对这两个问题非常模糊,最终选择了一个运行错误。
最后回来在机器上(vc6.0)中试了才发现,结果是输出hello,但是也运行错误!