问题 单项选择题

有以下程序: #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。

单项选择题
填空题