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


第6行定义了一个整型指针变量p , 它里面存储的值是数组arr第二个元素对应的内存地址 。 第7行定义了一个整型变量num , 它的值取的是指针变量p本身自增1之后所对应的值 , 虽然(*++p)之后还有一个自增运算符 , 但是这里这个自增运算符在后面 , 所以会将(*++p)的值先返回给变量num 。

所以最终变量num的值是数组arr第三个元素的值 , 也就是30

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

第二道测试题

上述C语言程序和第一道题的程序是一致的 , 但是最终问的问题不一样 。 上面这第二道测试题的问题是问最终arr[2
的值是多少?我们具体来分析一下:

在第7行中 , (++p)这是指向了数组arr第三个元素了 , 因为在第6行初始化指针变量p的时候 , 里面的值是初始化为了数组arr第二个元素的内存地址 , 而++p是将指针变量p自增1 , 所以就往后移动了一个整型元素 。

所以说第7行的(*++p)++就相当于arr[2

推荐阅读