金山软件的一道笔试题
今天下午参加了金山软件的笔试题,其中的一道选择题,让我对选项非常怀疑,回来在机器上试了试,才明白过来。
题目非常简单,
上述代码输出结果。
当时我看到这个代码的时候,首先感觉到这个代码有问题的。因为pch是指向只有一个字符的的字符指针的,但是在strcpy中却用一个字符串给这个指针赋值了。由于指针可以操作内存的特点,知道肯定能将hello写入内存中的,所以对这两个问题非常模糊,最终选择了一个运行错误。
最后回来在机器上(vc6.0)中试了才发现,结果是输出hello,但是也运行错误!
题目非常简单,
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,但是也运行错误!