问题
单项选择题
有以下程序: #include <stdio.h> void swap(char *x, char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1="abc", *s2="123"; swap(s1, s2); printf("%s, %s\n", s1, s2); } 程序执行后的输出结果是______。
A.321,cba
B.abc,123
C.123,abc
D.1bc,a23
答案
参考答案:D
解析: 字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即“abc”的第一个字符的地址。s2指向的是“123”的第一个字符的地址。调用swap函数之后交换的是两个字符串的第一个字符‘a’和‘1’的内容,所以打印输出为D。