一、例一
我们可以通过画图来理解,&a+1是跳过了整个数组,a+1是a[1]的地址,而ptr是指向&a+1的地址,ptr-1则是指向前一个位置的地址,然后通过解引用操作可以分别得到2和5的值,这道题还是比较基础的,做指针题目我们要学会画图。
二、例二
这一道题是结构体型指针,第一个输出是进行的指针加1,那么在16进制中输出的就是第一个结果。第二个输出是强制转换成无符号长整形输出,整型加1,那么输出的结果仅仅只是加了1。第三个输出是强制转换成无符号的int*输出,int控制4个字节,那么加1的话,就会在原来的内存上加了4个字节。
三、例三
在这里我们要特别注意数组里面是一个逗号表达式,而且是用小括号表示的,最终的结果只是每个括号的最后一个值,他在数组中是这样存放的
然后看p指向的是a[0]的地址,如下图,那么解引用后得到的就是a[0]的值,也就是1。
四、总结
在我们做指针相关的题目时,我们要学会画图,知道指针指向的是什么地方,通过画图之后才能够更能直观看到指针所指的位置,如果我们懂得画图之后,那么在遇到指针题目的问题就会迎刃而解了。