指针的偏移

    技术2022-07-13  79

     

    在下微信公众号:welldo。欢迎关注(虽然现在好像啥也没有)

     

    基本数据类型指针偏移

    //方便演示,先初始化一个指针为空。 int* a = nullptr; a = a+1;//+1就偏移一个单位,而a定义的是指向int型数据的指针,int型有4个字节,所以输出就是00000004

    //假设我们定义一个一维数组

    int arr[5]={1,2,3,4,5};   int* p= &arr[0];//这里也可以直接写成arr   p = p+1;//相当于p = &arr[0+1]   *p; //所以*p = 2;   /*   如果我们再定义一个指针   因为前面的p已经指向了arr[1],为了达到更好的演示效果,    就让p1指向不同的地址   */ int* p1=&arr[2];   /*   根据前面的我们很明显可以看出   **p1也就是&arr[2]是可以看做&arr[1]+1的**   而&arr[1]又是等于p的,故p1=p+1,所以结果显而易见   */   p1-p;

     

    数组指针的偏移

    在project的介绍中说了,指针偏移一个单位,单位的大小由指向的数据大小决定。

    所以我们数组指针的偏移就需要注意,要看指针指向的这个数组的大小。

    //取整个数组的地址,也就是用这个数组的首地址初始化指针,

    int* p2=&arr;//在数值上,&arr与&arr[0]一样,但意义不懂,所以不相等。

    p2+1;//这此偏移的一个单位就要看arr的大小了,上文定义的大小为5,里面的数据类型都是int型,所以整个数组所占字节数为20

     

     

    以上皆为个人对这几个方面的东西的拙见,如有错误,还请多多指教,以交流为主,自主再行求证,不要盲目相信,谢谢你们的观看。

     

     

     

     

     

    Processed: 0.011, SQL: 9