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


++了 , 原先arr[2
的值是30 , arr[2
自增运算之后 , 值就变成31了 , 所以上题的答案是:最终arr[2
的值是31

接下来我们再来看第三道测试题:

第三道测试题

上面这段代码 , 复杂程度就稍大一些了 。 这里涉及到了一维数组、一级指针、二级指针的相关知识点 。 我们具体来分析一下这段程序:

在第5行定义了一个整型数组arr , 有五个元素 , 这和前面的代码都是一样的 , 此处没有变化 。 第7行也是定义了一个整型指针变量p , 指向数组arr的第二个元素 , 这里和前面的代码相比 , 也没有变化 。

但是到了第8行 , 这里就多出了一个二级指针变量q , 这个指针变量里面存储的是指针变量p本身的内存地址 。 在第10行 , 在逗号运算符左侧 , 指针变量p自增1 , 此时指针变量p所指向的地方是数组arr的第三个元素了 。 同时也就意味着*q的值和&arr[2
相同了 。

在第10行逗号运算符右侧 , 【 (*(*q)++)++ 】这个表达式稍微有些复杂 , 我们具体来分析一下:

推荐阅读