首页 新闻 会员 周边

指针怎么直接访问连续数组地址

0
悬赏园豆:30 [待解决问题]

指针怎么直接访问连续数组地址?#

比如:3个数组 arr1,arr2 ,arr3
比如arr1的地址为2000000 ,arr2的地址为2000400

int * p;
 p = arr1;
p += 1024;

这样p的地址虽然和arr2的地址相同,但是不知为什么访问不了数组内部的内容
对此我甚是疑惑,查了一上午没能有结果 。
望解答。谢谢.

问题补充:

就是用脚本取模了一个GIF的每一帧,生成了一个头文件,头文件里面有一些数组大概有1.3W个数组(一个数组是一个帧),想让视频在屏幕中显示出来,不可能把所有的数组都写一遍,然后看了BMP1数组的地址和BMP2数组的地址,BMP1为2000000,BMP2为2000400,然后定义了一个指针p,指针p指向BMP1,然后显示BMP1,BMP1这一帧可以显示,然后指针p+=1024,然后指针的地址和BMP2的地址相同,显示第二帧像素就乱了,单独显示第二帧是可以显示的
------------------大概问题就是这样

~内个臣呐~的主页 ~内个臣呐~ | 初学一级 | 园豆:172
提问于:2022-10-06 11:04
< >
分享
所有回答(1)
0

首先,题目的描述说明题主对于指针了解得不是很透彻;
题中使用的是int*,也就是Int类型的指针,指向的应当为int类型的变量或数组。
而在64位机中,int一般应该是4字节,也就是说,我们假设当下指针p指向的地址为0x2000 0000,执行一次p += 1;
p指向的地址变为0x2000 0004;而不是你所以为的0x2000 0001.
明白这一点,你的问题应该可以得到解决了。

云逆 | 园豆:154 (初学一级) | 2022-10-06 19:11

我这里p+=1的值为20000001,p是指向数组的
p+=400后p的值变成了20000160,p+=1024后p的值才变成20000400,对指针的偏移量我了解过一点点,但是我想的是定位到下一个数组。。。目前还没找到解决方法

支持(0) 反对(0) ~内个臣呐~ | 园豆:172 (初学一级) | 2022-10-07 14:21

@内个臣呐: 多个数组,地址并不是连续的。不知道你为什么要怎么做,可以搞个二维数组。

支持(0) 反对(0) 。淑女范erり | 园豆:961 (小虾三级) | 2022-10-13 20:58

@。淑女范erり: 二维数组确实可以,但是太多太多

支持(0) 反对(0) ~内个臣呐~ | 园豆:172 (初学一级) | 2022-10-13 21:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册