文章

字符串长度函数

题目

字符串长度函数1

34题的区别在于一个”t–“,因此答案也就有了区别:“字符串的长度”,“字符串s的长度”

一个字符串变量:s[10]=”abcde”

“字符串的长度”指这个字符串变量的长度

“字符串s的长度”指“abcde”的长度

是一个文字游戏

字符串长度函数2


不过既然两道题都选错了我们从头开始理解

首先涉及知识点:

  • while语句

    字符串长度函数2

    在本题中,statement部分仅仅为一个分号(这种语句也叫空语句),return语句就与循环无关了

  • 字符串的相关知识

    • 地址

      字符串长度函数4

      在本题中,s,t均为地址变量

    • 取地址内容 *

      符号*代表从所给地址取出所对应的内容

    • 结束字符

      字符串长度函数5

      1
      2
      3
      4
      5
      
      在本题中,就是用了这样的特性
      
      s+5所存储的内容的值为0(注意是内容的值)
      
      在本题中,t的值一直从aa自增到aa+5,此时内容的值为0,while(0),循环结束,t=aa+6
      
    • 自增运算符与运算符的优先级和结合性

      ++是自增运算符,是单目运算符,其作用是使单个变量的值增1。它有两种使用情况: 1)前置:++i,先执行i=i+1,再使用i值; 2)后置:i++,先使用i值,再执行i=i+1。 例如: j=3; k=++j; 执行“k=++j”语句后,k=4,j=4。上述语句等效为: j=3; j=j+1; k=j; 再如: j=3; k=j++; 执行“k=j++”语句后,k=3,j=4。上述语句等效为: j=3; k=j; j=j+1;

      优先级运算符名称或含义使用形式结合方向说明
      1[]数组下标数组名[常量表达式]左到右 
      ()圆括号(表达式)/函数名(形参表)   
      .成员选择(对象)对象.成员名   
      ->成员选择(指针)对象指针->成员名   
      2-负号运算符-常量右到左单目运算符
      (类型)强制类型转换(数据类型)表达式   
      ++自增运算符++变量名/变量名++单目运算符  
      –自减运算符–变量名/变量名–单目运算符  
      *取值运算符*指针变量单目运算符  
      &取地址运算符&变量名单目运算符  
      !逻辑非运算符!表达式单目运算符  
      ~按位取反运算符~表达式单目运算符  
      sizeof长度运算符sizeof(表达式)   

      ​ 字符串长度函数6

      ​ 虽然你注意到了(给++加了个小括号)++与*同优先级,但从结合性上看先算++,但是忽略了++的特性,i++的返回值是i

      ​ 在本题中,当while(0)发生时,t++给while的结果是s+5,但当while执行完后t变为了s+6

  • 函数定义,函数参数传递,地址变量定义在此不做赘述(困了)

  • 还有啥疑问白天再说吧

本文由作者按照 CC BY 4.0 进行授权