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);
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报