指针和数组的区别

1、大小不同,

     指针在32位平台4字节,在64位平台8字节,

     数组为:   sizeof(arr)/sizeof(arr[0])

2、访问权限不同

     数组名永远指向数组的开头元素,不能移动,指针p的值可以发生改变

     arr++  ;  //error

     p++;     //correct

3、访问方式不同

      数组和指针在很多情况下可以互换,例如  :   arr[i]==*(arr+i)   arr[i]  是在数组名完后偏移i个单元格,然后取值

     *(p+i)=p[i]    把p的值先加i,然后再跳到该地址上取值


例:

void main()
{
    int brr[10]={1,2,3,4,5,6,7};
    int *p=&brr[3];
    printf("%d","%d",sizeof(arr),sizeof(p));
    printf("%d","%d",p[-1],brr[1]);
    printf("%d","%d",*(p+2),*(brr+2));
    return 0;
}



 

猜你喜欢

转载自blog.csdn.net/lyt15829797751/article/details/80502546