📅  最后修改于: 2023-12-03 14:54:49.404000             🧑  作者: Mango
这是2015年6月份计算机科学与应用UGC NET考试的第三轮问题57,该问题涉及到程序员可能会遇到的问题和解决方案。
问题57:下面代码的输出是什么?
#include <stdio.h>
int main()
{
char arr1[] = "Hello";
char *arr2 = "World";
printf("%s", arr1);
printf("%s", arr2);
return 0;
}
请预测该代码的输出结果并解释为什么。
这段代码的输出结果是:"HelloWorld"。
在该代码中,我们声明了一个字符数组arr1
,并将其初始化为字符串"Hello"
。我们还声明了一个字符指针arr2
,并将其初始化为字符串"World"
。
在C语言中,字符数组和字符指针有一些差异。字符数组在内存中占用一段连续的空间,而字符指针只是指向存储字符串的内存空间的地址。
在printf
函数中,%s
表示要打印一个字符串。当我们传递一个字符数组给printf
函数时,它会打印数组中的字符直到遇到字符串的结束字符\0
。所以第一个printf
语句会打印出"Hello"
。
然而,在第二个printf
语句中,我们传递了字符指针arr2
给printf
函数。printf
函数会使用该指针来确定要打印的字符串的起始地址,并一直打印直到遇到结束字符\0
。所以它会打印出"World"
。
因此,该代码的输出结果是"HelloWorld"
。
以上是问题57的解答,希望能对你有所帮助!