这是C中动态数组分配的正确代码吗?

时间:2013-02-18 02:26:02

标签: c memory dynamic

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;
}

我是否正确地为我的*** char正确分配了内存?我正在尝试创建一个二维“句子”数组。我的主程序中存在问题,我认为这可能是问题所在。

1 个答案:

答案 0 :(得分:0)

来自评论:

  

我遇到的问题是字符串数组。在另一个函数中,我为每个* strPtr分配一个字符串。当我这样做时,它会覆盖它之前的所有值。即* strPtr =“你”* strPtr + 1 = hi。 NOW * strPtr + 0等于hi。

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

*strPtr[1] != *strPtr + 1 
*strPtr[1] == *(strPtr + 1) == strPtr[1][0] 

您应该使用第二行中的一种形式,而不是第一行。