龙猫12138 2017-06-04 13:47 采纳率: 0%
浏览 1075

c++下面这道题的答案为什么是a?

以下函数的返回值是
int function(char *x)
{
char *p = x ; while(*p++) ; return(p-x-1) ;
}
A 求字符串长度 B 将字符串X连接到字符串p的后面
C 将字符串X复制到字符串p中 D 将字符串x反向存储

先多谢大家的热心解答!!

  • 写回答

4条回答 默认 最新

  • 一个纸杯 2017-06-04 14:12
    关注
     int function(char *x)
    { 
    char *p = x ;
    while(*p++) ;
    return(p-x-1) ;
    }
    

    这个函数以传址的方式传入一个c风格字符串x,在函数中,将p指向字符串首地址(char *p=x;),首先你要知道c风格的字符串是以'\0'结束的,它对应ascll码中的0,p++操作是将p指向下一个字符的操作,所以while(*p++)这一句,当p指向了'\0'也就是字符串结尾,此时*p正好也是0,while循环也就退出了,测试p指向字符串末尾,而x指向字符串开头,用,末尾减开头就是字符串长度,但是为什么要多减1呢,因为末尾的'\0'是不能算在长度里面的,所以要把这个多算进去的减去。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?