📅  最后修改于: 2023-12-03 15:10:14.327000             🧑  作者: Mango
以下 C 代码的输出是什么?
#include <stdio.h>
int main() {
char *p = "Hello World";
char *t;
t = p++;
while (*t != '\0') {
printf("%c", *t);
t++;
}
printf(" ");
while (*--p != 'H') {
}
printf("%s", p);
return 0;
}
(A) Hello World
(B) World
(C) World Hello
(D) None of the above
根据给出的 C 代码,我们有以下的执行步骤:
在 main()
函数里,定义了 char *p
和 char *t
。
p
被分配一个指向 "Hello World" 的地址。
下一行代码将 p++
赋值给 t
,然后将指针 p
向后移动一次。
第一个 while
循环遍历指针 t
所指向的字符序列,并依次打印每个字符。
第二个 while
循环将指针 p
移动到 'H' 字符或字符串的开头。
printf()
函数输出 p
指针所指向的字符串。
因此,程序的输出将是 "World Hello",选项 (C) 是正确的。
答案:(C)
解释:
代码定义了一个指针 `p`,指向字符串 "Hello World"。另外定义了一个指针 `t`,并将指针 `p` 向后移动一次的结果赋值给 `t`。
程序先输出指针 `t` 所指向的字符序列,即字符串 "Hello World",接下来输出空格。指针 `p` 移到字符串的开头,再输出指针 `p` 所指向的字符串 "World"。
输出结果:World Hello