数组,指针的移动
来源:互联网 发布:合工大网络视频课 编辑:程序博客网 时间:2024/05/22 10:44
#include<stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int * )(&a + 1); printf("%d %d\n", *(a + 1), *(ptr - 1)); return 0; }
程序运行的结果是:2
,5
.2
这个结果没什么异议*(ptr-1)
为什么5
呢? 因为是&a+1
移动的是一整个数组的长度(&a
是整个数组的长度5*int
),之后强制类型转换(int*)
,ptr-1
移动之后的字组长度的首地址再向后移动一个int
, 到了前面数组的最后一个字节地址了, 所以是5
.
经测试把a[5]
改成a[6]
, 加一个元素6
, 输出也是6
.
#include<stdio.h> int main() { int a[6] = { 1, 2, 3, 4, 5, 6 }; int *ptr = (int*)(&a + 1); printf("%d %d\n", *(a + 1), *(ptr - 1)); return 0; }
把&a
改成&a[0]
,移动的就是一个int
了,结果为2
,1
, 如下:
#include<stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int*)(&a[0] + 1); //这样改后 "int *" 可以不要了. printf("%d %d\n", *(a + 1), *(ptr - 1)); return 0; }
0 0
- 数组,指针的移动
- 关于字符数组的指针移动操作
- php关于数组指针移动的几个函数
- 指针的指针 数组指针 指针数组
- 《C和指针》——指向数组的指针(逐个移动和逐行的区别)
- 指针, 指针的指针, 数组, 指针数组, 数组指针
- 指针, 指针的指针, 数组, 指针数组, 数组指针
- 指针数组的指针数组
- 数组指针, 指针的指针
- fscanf的指针移动
- 指针地址的移动
- 指针,数组指针,指针数组的剖析
- 指针数组,数组指针,指向指针数组的指针
- 数组和指针地址移动问题
- 指针实例:指针的指针,数组指针,指针数组
- 指针、数组指针、指针数组、指向指针的指针
- 数组指针,指针数组,二维数组,二维数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- Linux下MySQL导入文件出错ERROR 1290 (HY000)
- c!#!远!程!关!闭!与!重!启!计!算!机
- 掌握 tar 命令让你秒变大牛
- Android 滑动删除viewGroup
- 《锋利的jQuery》第二章、jQuery选择器
- 数组,指针的移动
- 面向对象_接口的特点
- 1079. Total Sales of Supply Chain (25)
- 在工作方式0下,13位工作方式,计数器是由TH的全部8位和TL的5位组成,其计数范围是?
- "Missing or invalid signature. The bundle '' at bundle path '' is not signed using an Apple submiss
- 【条件概率】Headshot, ACM/ICPC NEERC 2009, UVa1636
- MATLAB数组的输入方式
- PctoLCD2002取模软件的使用
- 2015~2016项目小结