考虑以下 C 程序:
#include
#include
void geek1(char *s1, char *s2) {
char *temp;
temp = s1;
s1 = s2;
s2 = temp;
}
void geek2(char **s1, char **s2) {
char *temp;
temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main() {
char *str1 = "for geek", *str2 = "by geek";
geek1(str1, str2);
printf("%s %s", str1, str2);
geek2(&str1, &str2);
printf(" %d", (int) strlen(str1));
return 0;
}
最后 printf 将打印 _______________ 。
(一) 2
(乙) 7
(三) 3
(D)这些都不是答案:(乙)
说明:第一个函数geek1 不会交换字符串,所以第一个打印是 geek by geek。
现在,函数geek2 将交换字符串,而 strlen(str1) 将返回字符串“by geek”的长度,即7 。
选项(B)是正确的。
这个问题的测验