白小水i 2021-10-21 16:50 采纳率: 83.3%
浏览 28
已结题

这个问题如何分析,结果选什么呢

img

img

  • 写回答

2条回答 默认 最新

  • a5156520 2021-10-21 18:21
    关注

    答案应该为D ,说明如下:

    
    //创建一个二维字符数组,数组是2*3的字符数组。 
        //将字符指针p指向二维数组开头 
        char s[2][3] = {"ab","cd"},*p=(char *)s;
        
        //下面这个我有点不太确定是否正确
         //  s为一个单位为3个字符的字符指针 ,
        //*(s+3)为二维数组开始位置后第3个长度为3个字符的字符指针,这个是指针,不是字符。  
        printf("%c\n",*(s+3));
        
        //s[1][1] 指向二维数组开头后第(0+2*2)个字符的位置,字符串自带一个'\0'字符,即 'd'
        printf("%c\n",s[1][1]);
        
        // p为单位为一个字符的字符指针,p[1][1]语法错误。 
      //    printf("%c",p[1][1]);
        
        // p为单位为一个字符的字符指针, *(p+3)指向二维数组开头后第3(0+3)个字符 ,字符串自带一个'\0'字符,即'c' 
        printf("%c\n",*(p+3));
        
        //  p为单位为一个字符的字符指针,因为++运算符优先级高于*,所以先将p指针往后一个字符位置,即'b' 
        //然后因为*运算符 优先级高于+,所以第二步执行取p当前的值操作,即获得值b,然后字符'b'+2,即等于'd' 
        printf("%c\n",*++p+2);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月21日