首页 > 试题广场 >

以下代码的输出结果是?

[单选题]
以下代码的输出结果是?
char *p = "abc";
char *q = "abc123";
while(*p = *q)
    printf("%c%c", *p, *q);
  • aabbcc
  • aabbcc123
  • abcabc123
  • 代码段错误
答案选D,
    因为两个指针都指向的字符串常量,不能被重新赋值,*p=*q是错误的。
发表于 2015-04-16 19:09:36 回复(0)
第一,while(*p=*q) 错,不能赋值 
第二,print少了f 错,应该是printf 
第三,如果上面两点都改了,也就是改成
 while(*p==*q)
 printf("%c %c",*p,*q); 
那么该程序是死循环,无限打印
发表于 2016-12-23 09:58:59 回复(6)
“abc”与“abc123”都称为字符串常量,字符串常量保存在一个只读常量区的内存段中,只读常量区中内容可读但不可写。字符串常量本身就代表着它在内存中的首地址,所以对它的‘地址’进行修改会出现内存非法访问的段错误。 如果有两个字符串常量的内容相同,则他们地址也相同。
发表于 2022-02-27 23:20:19 回复(0)
我觉得程序的意思应该是这样的:
#include <stdio.h>
int main()
{
    char *p="abc";
    char *q="abc123";
    while(*p==*q)
    {
        printf("%c%c",*p,*q);
        p++;q++;
    }
    return 0; 
程序运行出来就是A选项,但是编译的时候被提醒不建议用字符串常量赋值给字符指针。
warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|

发表于 2016-10-03 10:09:04 回复(0)
除了字符串常量不能赋值之外,还有会陷入死循环
发表于 2016-06-21 23:14:21 回复(0)
字符串常量不能被重新赋值。
因此*p=*q错误。
发表于 2015-09-07 21:42:43 回复(0)
字符串常量不能被赋值
发表于 2018-06-04 09:33:29 回复(0)
这题就是考察细心程度,while循环语句中的判断条件中是复制语句,而题目中的两个都是字符串常量,不能修改,故选D
发表于 2017-05-10 08:37:29 回复(0)
注意等于==和赋值=
发表于 2017-03-08 08:27:01 回复(0)
只有我一个人觉得他是把printf函数写错了吗。。。
发表于 2016-12-23 09:55:11 回复(1)
字符串常量赋值会出错
发表于 2015-12-02 20:25:21 回复(0)
while(*p=*q) 此句中,无法给*P赋值,为全局变量
发表于 2015-04-15 16:57:30 回复(1)
发表于 2018-04-21 21:28:18 回复(0)
1.while循环条件不是判断是否相等,而是赋值。但赋值出错。 2.因为无法修改字符串常量的值,p和q指向的是常量数据区,不允许修改。
发表于 2025-03-16 12:11:36 回复(0)
杀币了我
发表于 2023-11-15 09:05:13 回复(0)
我是瞎子
发表于 2023-08-19 21:07:37 回复(0)
注意等于==和赋值=
发表于 2022-10-09 22:35:46 回复(0)
指向不同的常量空间也不同所以就不能直接比较

发表于 2022-07-26 16:37:12 回复(0)
字符串常量是不能被重新赋值的
发表于 2022-03-25 23:20:42 回复(0)
两个指针都指向的字符串常量,不能被重新赋值
发表于 2022-03-21 09:39:30 回复(0)