考虑以下 C 程序:
#include
void fun1(char *s1, char *s2) {
char *temp;
temp = s1;
s1 = s2;
s2 = temp;
}
void fun2(char **s1, char **s2) {
char *temp;
temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main() {
char *str1 = "Hi", *str2 = "Bye";
fun1(str1, str2);
printf("%s %s", str1, str2);
fun2(&str1, &str2);
printf("%s %s", str1, str2);
return 0;
}
上面程序的输出是
(A)嗨,再见,嗨
(B)你好 再见 再见
(C)再见嗨嗨再见
(D)再见你好 再见你好答案:(一)
解释: fun1(char *s1, char *s2)
以上函数作用域是局部的,所以这里改变的值不会影响实际参数。所以值将是“嗨,再见”。 fun2(char **s1, char **s2)
在这个函数值是指向指针的指针,所以它改变了实际值的指针。所以值将是“再见你好”
答案是“嗨,再见,嗨”
选项(A)是正确的。这个问题的测验