考虑下面的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将打印_______________。
(A) 2
(B) 7
(C) 3
(D)这些都不是答案: (B)
说明:第一个函数geek1不会交换字符串,因此第一个打印是针对geek的。
现在,函数geek2将交换字符串,而strlen(str1)将返回字符串“ by geek”的长度,即7 。
选项(B)是正确的。
这个问题的测验