0
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 にメモリを正しく割り当てることができましたか? 「文」の 2 次元配列を作成しようとしています。メイン プログラムに問題があり、これが問題である可能性があります。

4

1 に答える 1

0

コメントから:

私が抱えている問題は、文字列配列にあります。別の関数では、各 *strPtr に文字列を割り当てます。そうすると、その前のすべての値が上書きされます。つまり、*strPtr = "あなた" *strPtr + 1 = こんにちは。NOW *strPtr + 0 はこんにちは。

このコードは問題ないように見えますが、ここでの説明はおかしいので、配列の使い方が間違っていると思います。

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

最初の行ではなく、2 行目のフォームのいずれかを使用する必要があります。

于 2013-02-18T03:18:53.327 に答える