gpt4 book ai didi

c - 如何将二维字符指针发送到内存分配函数?

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:46 24 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>


void createDynamicArrayForChar(int dimension, char **ptr)
{
ptr = (char**)malloc(dimension*sizeof(char*));

for (int i = 0; i < dimension; i++)
{
ptr[i] = (char*)malloc(20 * sizeof(char));
ptr[i] = "value";
}
}

int main()
{
char **ptrArray;
createDynamicArrayForChar(5, ptrArray);
printf("%s", ptrArray[3]);


getchar(); getchar();
return 0;
}

当我尝试编译这段代码时它给出了一些错误。我怎么解决这个问题?如何将 2D 字符指针发送到 C 中的函数?

最佳答案

首先,根据目前的代码,我看到两个问题。

  1. 您正在将 ptrArray 传递给函数并尝试在函数内部分配内存。请注意,C 使用按值传递函数参数传递,因此,如果您想将内存分配给 ptrArray 并期望将其refeclted 返回给调用者,无需returning,您将需要传递指向该 `ptrArray 的指针。

  2. 在代码中

    ptr[i] = (char*)malloc(20 * sizeof(char));
    ptr[i] = "value";

    你正在泄漏内存。使用 malloc() 分配内存后,您应该使用 strcpy() 将数据复制到分配的内存中。

也就是说,一些建议:

  1. see why not to cast malloc()C 中的 family 的返回值。
  2. sizeof(char)C 中保证为 1。不需要将其用作乘数。
  3. 在使用返回的指针之前,始终检查 malloc() 是否成功。

关于c - 如何将二维字符指针发送到内存分配函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com