C语言指针问题 10

如有定义chary[4]="321",则表达式*y+2的值是。如有定义charz[2][4]={"MAT","LAB"};,则表达式*(*z+2)的值是。如有定义char... 如有定义char y[4]= "321",则表达式 *y+2的值是 。
如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 。
如有定义char y[4]="321",*py=&y[0],则表达式*(py+2) 的值是 。
展开
 我来答
岔路程序缘

2019-06-11 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3412万
展开全部
一、如有定义char y[4]= "321"
表达式 *y+2的值是'5' 。
分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。
二、 如有定义char z[2][4]={"MAT", "LAB"};,
则表达式*(*z+2)的值是 'T'。
分析:z是二维字符串数组首字符串“MAT”的地址,*z的值就是“MAT”首元素字符'M'的地址,再加上2,就是字符'T'的地址,再取值,得到的就是字符'T'。
三、如有定义char y[4]="321",*py=&y[0],
则表达式*(py+2) 的值是'1' 。
解析:py是y(0) 的地址,py+2是地址加2,就等于y(2) 的地址了,再取值,得到元素y(2) 的值'1'。
X_earth
2019-06-11 · TA获得超过248个赞
知道小有建树答主
回答量:204
采纳率:73%
帮助的人:64.5万
展开全部
  • 如有定义char y[4]= "321",则表达式 *y+2的值是.

    首先*的运算优先级是大于+的,所以先计算*y,在数组表述中,变量名即是第零个数组元素的起始地址,那么*y就标识取得第零个数组元素,*y='3',那么*y+2='5'.

  • 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是.

    此问中变量z为二维数组,即2个包含4个元素的数组,2行4列,先计算*z,第一问中提到*z为数组第零个元素,那么*z=z[0]="MAT",即第零行元素,此时*z表示第零行元素的起始地址,*z+2则表示第零行第二个元素的地址,那么*(*z+2)则表示第零行第二个元素,即‘T’。

  • 如有定义char y[4]="321",*py=&y[0],则表达式*(py+2) 的值是 .

y[0]表示第一个元素,即'3',&y[0]则表示第一个元素的地址,py=&y[0]后py的值就是y数组第零个元素的地址,那么py+2则表示第二个元素的地址,*(py+2)就表示第二个元素,即'1'.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2019-06-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部

*y+2 = 0x35 = '5'

*(*z+2) = 0x54 = 'T'

*(py+2) = 0x31 = '1'

好好学习天天向上

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彭珂的课堂
2021-05-12 · IT资讯、技能教学、学习经验分享。
彭珂的课堂
采纳数:98 获赞数:343

向TA提问 私信TA
展开全部

C语言_071_指针的定义和使用_上

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦明诗11
2020-01-07 · TA获得超过2010个赞
知道答主
回答量:3.2万
采纳率:2%
帮助的人:1566万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式