您的位置:首页 > 其它

指针与数组--指针访问与下标访问

2013-05-10 12:04 295 查看
指针与数组下标访问与指针访问的区别如下:

char *p="abcde";

char a[5]={1,2,3,4,5};

printf(" p+4 = 0x%p,*(p+4) = 0x%x\n",p+4,*(p+4));

printf("&p[4] = 0x%p, p[4] = 0x%x\n",&p[4],p[4]);

printf(" a+4 = 0x%p,*(a+4) = %d\n",a+4,*(a+4));

printf("&a[4] = 0x%p, a[4] = %d\n",&a[4],a[4]);

仿真局部变量的地址与结果如下所示:



(1)以指针形式访问指针

*(p+4)。指针p的地址为0x00415754,加上4个字符的偏移量后的新地址为0x00415758,然后取出新地址中的内容0x65(e)。

(2)以下标形式访问指针

p[4]。编译器将下标形式的操作解析为以指针形式的操作。首先取出 指针p的地址0x00415754,再加上4个字符的偏移量后的新地址为 0x00415758,然后取出新地址中的内容 0x65(e)。

(3)以指针形式访问数组

*(a+4)。数组a的首地址为0x0012ff4c,加上4个字符的偏移量后的新地址为0x0012ff50,然后取出新地址中的内容 5。

(4)以下标形式访问指针

a[4]。编译器将下标形式的操作解析为以指针形式的操作。首先取出数组a的首地址为0x0012ff4c,加上4个字符的偏移量后的新地址为0x0012ff50,然后取出新地址中的内容 5。

测试结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: