这是C中动态数组分配的正确代码吗 void dynamicArray(整数**num1,整数**num2,字符***str,整数大小) { int i=0; *(num1)=(int*)malloc(sizeof(int)*size); *(num2)=(int*)malloc(sizeof(int)*size); *(str)=(char**)malloc(sizeof(char*)*size); 对于(i=0;i

这是C中动态数组分配的正确代码吗 void dynamicArray(整数**num1,整数**num2,字符***str,整数大小) { int i=0; *(num1)=(int*)malloc(sizeof(int)*size); *(num2)=(int*)malloc(sizeof(int)*size); *(str)=(char**)malloc(sizeof(char*)*size); 对于(i=0;i,c,memory,dynamic,C,Memory,Dynamic,我是否成功地为我的***字符正确分配了内存?我试图创建一个二维的“句子”数组。我的主程序有问题,我想这可能就是问题所在。从评论中: 我遇到的问题是字符串数组。在另一个函数中,我为每个*strprtr分配一个字符串。当我这样做时,它会覆盖它之前的所有值。i、 e.*strprtr=“You”*strprtr+1=hi。现在*strprpr+0完全等于hi 由于这段代码看起来不错,但您在这里的解释看起来很有趣,我认为您使用的数组是错误的 void dynamicArray(int** num1, i

我是否成功地为我的***字符正确分配了内存?我试图创建一个二维的“句子”数组。我的主程序有问题,我想这可能就是问题所在。

从评论中:

我遇到的问题是字符串数组。在另一个函数中,我为每个*strprtr分配一个字符串。当我这样做时,它会覆盖它之前的所有值。i、 e.*strprtr=“You”*strprtr+1=hi。现在*strprpr+0完全等于hi

由于这段代码看起来不错,但您在这里的解释看起来很有趣,我认为您使用的数组是错误的

void dynamicArray(int** num1, int** num2, char*** str, int size)
{
    int i = 0;

    *(num1) = (int*)malloc(sizeof(int) * size);
    *(num2) = (int*)malloc(sizeof(int) * size);

    *(str) = (char**)malloc(sizeof(char*) * size);

    for( i = 0; i < size; i++){
        *(*(str) + i) = (char*)malloc(sizeof(char) *5);
    }

    return;
}

您应该使用第二行中的一个表单,而不是第一行中的表单。

很少需要三重间接寻址,当需要时,他们通常非常精通指针。我不想在这里说这种情况。@WhozCraig和他正在计算
malloc()
的返回值,感谢你提醒我为什么喜欢Java。不,它应该是int大小,我想要一个包含int数量的“数组”。语法就我所知是正确的。我认为您试图在一个功能中完成几个不相关的任务。例如,您可以创建一个为
int
数组分配内存的函数,如果需要多个数组,只需调用它几次即可。还有,你有什么问题?
*strPtr[1] != *strPtr + 1 
*strPtr[1] == *(strPtr + 1) == strPtr[1][0]