C语言第33课:通过分析三道测试题,进一步加深对于指针与数组的理解( 四 )

首先(*q)++这个表达式表示指针变量p的值自增1(因为*q的值是指针变量p里面存储的值) , 但是对于这个表达式返回的是指针变量p自增之前的值 , 因为(++)在后面 。 这里有一点饶了 , 这就是指针较为难以把握的地方了 , 有时候写的稍有复杂了 , 就会比较绕了 。

接下来继续分析:(*(*q)++)这个表达式表示获取的是指针变量p自增之前所指向的那段内存 , 也就是arr[2
, 再然后对于整个表达式【 (*(*q)++)++ 】实际上就是相当于arr[2
++ , 所以此时数组arr[2
的值变成了31

在第14行arr[i
*=10这个表达式作用是将数组arr每个元素的值在原先的基础之上再乘以10 , 所以最终数组arr每个元素的值分别是:100、200、310、400、500

当指针处在一些较为复杂的运算中 , 或者是在一些复杂的表达式中的时候 , 确实会比较难以分析 , 因为指针本身就是一处难点 , 在复杂表达式中那就是“难上加难”了 。 但是如果一点一点去分析 , 将复杂的表达式拆成较为好分析的多个一小段的表达式 , 那分析起来就会变得较为容易了 。

推荐阅读