day11 鹏哥C语言-指针




这是对于32位的平台

这是对于64位的平台

其实对于这个来说,很好理解,当我们定义完指针int *pa=&a;此时pa和&a没区别,指的就是a所在的地址,而此时*pa就是a的元素,图中即为0x11223344

这和我们所想的一致

当我们没有没有用好符合我们定义的指针的时候,我们改变的只有00

这是啥意思,就是说当你定义指针,定义错的时候,解引用访问的类型是不一致的,这里很明显是访问了两个

这里的地址是一样的




不能混用,知道没
====================================================



越界访问是这样的

为什么这个是野指针,因为由于a是形式参数,当函数结束,a消失,但是主函数却传来了地址
=========================================================================
指针使用的正确指南



区分一下
========================数组与指针=========================================




对于不同类型的字符类型来说是不能进行相减的

利用指针-指针的办法去计算字符串长度


其实很好明白,就是对于地址的访问的时候,可以访问最后一个,但是不能访问0元素的前一个

、
通过指针去访问数组


这是什么意思,就是通过指针去输出我们的数组,你要记住,只要是在定义之外的元素中,只要是*p这种就是指的是值。但是如果是定义之外的p,指的是就是地址,也就是数组的首地址


对于数组来说,前面三行这些都是数组的元素的输出方法。对于最后一行来说,这都是地址的输出方法

函数传参版本,还记得吗,这里的sz一定要在主函数去计算好,其中函数test传输的是arr地址元素,传输到地址p上面去



其实这里还是主要讲了arr[i]<====>*(arr+i),代入到我们的代码中,此时parr[3]中存放的是数组123的首地址,其中parr[0][1]就是将(parr[0]+1)进行移动而已,以此类推
