指针与数组--指针访问与下标访问
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。
测试结果如下:
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。
测试结果如下:
相关文章推荐
- c++ 基础 指针访问数组两种方法 下标法 指针法
- c++之Vector容器数据两种取值方法(指针访问,数组下标访问)
- 数组的下标访问和指针访问方式效率分析比较
- c++中如何使二级指针能够像数组下标模式访问
- 数组的下标访问和指针访问方式效率分析比较
- 数组的下标访问和指针访问方式效率分析比较
- [指针一]结构体数组作为形参传递,下标访问和指针访问使用该结构体
- 多维数组元素的下标引用于指针访问
- Objective-C实现一个基于数组下标[index]和字典[@"key"]的访问模式
- C语言使用指针访问数组
- 指针访问与数组下表访问的速度--记录
- Objective-C如何自己实现一个基于数组下标的属性访问模式
- 数组下标访问
- 指针访问二维数组 数组指针
- NYOJ 贪心 vector的使用,是一个数组,有重复数据,可以下标访问
- 系统复习:关于数组访问与指针数组
- 指针访问与数组访问的效率分析
- 用指针访问多维数组中的元素
- 指针访问数组1