C 将指针的值指定给二维数组
我有以下代码,运行良好:C 将指针的值指定给二维数组,c,arrays,pointers,C,Arrays,Pointers,我有以下代码,运行良好: int array[16][2] = {{0}}; void *buffer_ptr = NULL; get_buffer(&buffer_ptr); // This is a function which gives me the address of buffer ptr file_read(handle, size, buffer_ptr); // This function reads and stores data into buffer_pt
int array[16][2] = {{0}};
void *buffer_ptr = NULL;
get_buffer(&buffer_ptr); // This is a function which gives me the address of
buffer ptr
file_read(handle, size, buffer_ptr); // This function reads and stores data into buffer_ptr
现在,我想将这个读取值复制到缓冲区中,并复制到数组中。我目前正在做这项工作:
for (i = 0; i < 16; i++)
{
array[i][0] = *((int *)buffer_ptr+(2*i));
array[i][1] = *((int *)buffer_ptr+(2*i)+1);
}
(i=0;i<16;i++)的
{
数组[i][0]=*((int*)缓冲区_ptr+(2*i));
数组[i][1]=*((int*)缓冲区_ptr+(2*i)+1);
}
但我相信有更好的方法来做到这一点
谢谢
但我相信有更好的方法来做到这一点
是的,直接读入数组。不需要中间缓冲区
我猜你的文件是一堆4字节的整数,你想要一次两个。首先,对数组使用固定宽度类型,否则可能会得到错误的整数大小
#include <stdint.h>
int32_t array[16][2] = {{0}};
但我相信有更好的方法来做到这一点
是的,直接读入数组。不需要中间缓冲区
我猜你的文件是一堆4字节的整数,你想要一次两个。首先,对数组使用固定宽度类型,否则可能会得到错误的整数大小
#include <stdint.h>
int32_t array[16][2] = {{0}};
get\u buffer
做什么?您的评论不是很有启发性,因为您已经知道buffer\u ptr
的地址。这更像是一个问题,您可能需要memcpy(&array,buffer\u ptr,sizeof array)代码>文件的格式是什么?get\u buffer
做什么?您的评论不是很有启发性,因为您已经知道buffer\u ptr
的地址。这更像是一个问题,您可能需要memcpy(&array,buffer\u ptr,sizeof array)代码>文件的格式是什么?我不能直接读取。直接从内存中读取时得到某些限制区域。我给buffer_ptr一个特定的地址,该地址是开放的,可以读入,但数组只是一个局部变量,它将进入堆栈,我无法从堆栈中的外部内存中读取。@R.P.您需要详细说明您的问题。我无法直接读取。直接从内存中读取时得到某些限制区域。我给buffer_ptr一个特定的地址,该地址是开放的,可以读入,但数组只是一个局部变量,它将进入堆栈,我无法从堆栈中的外部内存中读取。@R.P.您需要详细说明问题中发生了什么。
fread(array, 4, 32, fp);