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) 的值是 。 展开
如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 。
如有定义char y[4]="321",*py=&y[0],则表达式*(py+2) 的值是 。 展开
5个回答
展开全部
一、如有定义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'。
则表达式 *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'。
展开全部
如有定义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'.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言_071_指针的定义和使用_上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询