一、如有定义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,在数组表述中,变量名即是第零个数组元素的起始地址,那么*y就标识取得第零个数组元素,*y='3',那么*y+2='5'.
如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是.
*y+2 = 0x35 = '5'
*(*z+2) = 0x54 = 'T'
*(py+2) = 0x31 = '1'
好好学习天天向上
C语言_071_指针的定义和使用_上