首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C中复制指针数组?(uint32_t)

如何在C中复制指针数组?(uint32_t)
EN

Stack Overflow用户
提问于 2020-11-10 02:15:31
回答 3查看 218关注 0票数 0

我有以下变量"places“,它是字符串位置的动态数组的ptr:

uint32_t*场所;

我希望我的函数返回一个重复的类型指针(uint32_t*)

我目前的尝试是:

代码语言:javascript
运行
复制
uint32_t arrCpy = malloc((numberOfElements) * sizeof(uint32_t));
memcpy(arrCpy, places, sizeof(uint32_t*)*numberOfElements);
return arrCpy;

请解释我做错了什么,以及如何解决这个问题?我收到了一个分割错误使用gcc。

更正:目标是获取一个uint32_t并创建一个重复的uint32_t“注意该函数返回键的位置数组的副本,而不是存储在哈希表中的原始数组的指针。原因是返回指向原始数组的指针将是危险的,因为它允许用户直接修改原始数组。”

EN

Stack Overflow用户

发布于 2020-11-10 02:24:37

uint32_t* places;不是一个指针数组,它是一个指向uint32_t的指针,一个数字。通常,要有一个something数组,就应该有一个指向something的指针。因此,您可能希望将您的places声明为uint32_t** places;,arrCpy也是如此。

代码语言:javascript
运行
复制
uint32_t** dup(uint32_t** places, int numberOfElements)
{
    uint32_t **arrCpy = malloc((numberOfElements) * sizeof(uint32_t*));
    memcpy(arrCpy, places, sizeof(uint32_t*)*numberOfElements);
    return arrCpy;
}

-编辑--

如果要复制uint32_t数组

代码语言:javascript
运行
复制
uint32_t* dup(uint32_t* places, int numberOfElements)
{
    uint32_t *arrCpy = malloc((numberOfElements) * sizeof(uint32_t));
    memcpy(arrCpy, places, sizeof(uint32_t)*numberOfElements);
    return arrCpy;
}

您可以看到,无论要复制哪个数组,都要创建一个指针,分配它的内存,然后复制它,然后返回该指针。

-编辑--

完整的代码

代码语言:javascript
运行
复制
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int* dup(int* places, int n)
{
    int *arrCpy = malloc((n) * sizeof(int));
    memcpy(arrCpy, places, sizeof(int)*n);
    return arrCpy;
}

void main()
{
    int a[3] = {1,2,3};
    int i;

    for(i=0; i<3; i++)
    {
        printf("%u, ", a[i]);
    }
    printf("\n");
    // print 1,2,3

    int *b = dup(a, 3);
    a[0]=100;
    for(i=0; i<3; i++)
    {
        printf("%u, ", a[i]);
    }
    printf("\n");
    // print 100,2,3
    for(i=0; i<3; i++)
    {
        printf("%u, ", b[i]);
    }
    printf("\n");
    //print 1,2,3
}
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64761912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档