memcpy和指针

前端之家收集整理的这篇文章主要介绍了memcpy和指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很困惑如何读取使用memcpy在数组中复制的指针.
以下是我尝试过的,但不行.

基本上,我已经分配了内存块,我正在复制类似于数组时尚的指针,但在重试期间它不工作.虽然这适用于基本数据类型

我想在元素块中存储任何东西,它可以是整数或指针.

#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),sizeof (int));
    }
    for ( i = 0; i < size; i++ ) { 
        int v;
        memcpy ( &v,sizeof ( int ));
        printf ( "%d\n",v );
    }
}
int main(){
    f1_int();
    f2_int_ptr();
    return 0;
}

在上面的代码中,f1_int工作正常,但f2_int_ptr不起作用.

解决方法

f2_int_ptr()需要成为:
void f2_int_ptr() {
    int i = 0;
    void *elements = malloc(size * sizeof(int*));

    for ( i = 0; i < size; i++ ) { 
       int *v = malloc ( sizeof(int));
       memcpy ( v,sizeof ( int ));
       memcpy ( INDEX(i),&v,sizeof (int*));
    }

    for ( i = 0; i < size; i++ ) {
        int *v;
        memcpy ( &v,*v );
    }
}

注意memcpy()参数的微妙变化.

注意:我真的,真的,不会写这样的代码!这是难以置信的.

原文链接:https://www.f2er.com/c/116165.html

猜你在找的C&C++相关文章