memcpy和指针

memcpy和指针,第1张

概述我很困惑如何读取使用memcpy在数组中复制的指针. 以下是我尝试过的,但不行. 基本上,我已经分配了内存块,我正在复制类似于数组时尚的指针,但在重试期间它不工作.虽然这适用于基本数据类型 我想在元素块中存储任何东西,它可以是整数或指针. #include <stdio.h>#include <stdlib.h>#include <string.h>#define INDEX(x) (( 我很困惑如何读取使用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()参数的微妙变化.

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

总结

以上是内存溢出为你收集整理的memcpy和指针全部内容,希望文章能够帮你解决memcpy和指针所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1234580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存