📌  相关文章
📜  门| Sudo GATE 2020 Mock I(2019年12月27日)|第62章

📅  最后修改于: 2021-06-29 05:00:04             🧑  作者: Mango

考虑下面的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)是正确的。
这个问题的测验