我很困惑如何使用memcpy读取复制到数组中的指针。以下是我的尝试,但不起作用。
基本上,我已经分配了一块内存,在其中类似于数组方式复制指针,但在检索时它不起作用。而这对基本数据类型有效。
我想将任何东西存储在element
块中,可以是整数
或指针
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INDEX(x) ((char *)elements + (sizeof(int*) * (x)))
int size = 10;
void f2_int_ptr() {
int i = 0;
void *elements = (void*)malloc(size * sizeof(int*));
for ( i = 0; i < size; i++ ) {
int *v = ( int *) malloc ( sizeof(int));
memcpy ( v, &i, sizeof ( int ));
memcpy ( INDEX(i) , v, sizeof (int*));
}
for ( i = 0; i < size; i++ ) {
int *v = (int*)0;
memcpy ( v, INDEX(i), sizeof(int *));
printf ( "%d\n", *v );
}
}
void f1_int() {
int i = 0;
void *elements = (void*)malloc(size * sizeof(int));
for ( i = 0; i < size; i++ ) {
memcpy ( INDEX(i) , &i, sizeof (int));
}
for ( i = 0; i < size; i++ ) {
int v;
memcpy ( &v, INDEX(i), sizeof ( int ));
printf ( "%d\n", v );
}
}
int main(){
f1_int();
f2_int_ptr();
return 0;
}
在以上代码中,f1_int
可以正常工作,但 f2_int_ptr
不能正常工作。
void *
的类型转换(以及宏)都会使您的代码变得非常丑陋。您使用void *
的原因是什么? - Oliver Charlesworth