Javaではポインタ演算はありません。これはあなたが求めているものだと思います。例えば、malloc
あなたはおそらく基本的にarray
へのポインタであるポインタを受け取ることになるタイプint
int* malloc(size_t size)
{
//
}
のポインタを返すことを想像してみてください。その後、通常の配列のようにインデックスを作成します。
int* arr = malloc(10 * sizeof(int)); // 10 contiguous int(s).
問題は、C
には関数が多重定義されていないという問題があります。だから、我々は一般的なmalloc
を書く方法を見つけなければならない。それ以外の場合は、タイプごとに異なるmalloc
になります。解決策は、必要なバイト数を送信することです。それから、あなたは好きなようにインデックスを付けることができます。これにより、柔軟性が向上し、すべてのソリューションに対応します。
int* i = (int*)malloc(10 * sizeof(int)); // 40 bytes if int = 4 bytes
char* c = (char*)malloc(10 * sizeof(char)); // 10 bytes if char = 1 byte
int thirdElement = i[3]; // third element. 12 bytes away from (*i)
char secondElement = c[2]; // second element. 2 bytes away from (*c)
ので、全体的なアイデアは、それは問題ではないということですどのように我々は、インデックス、我々はmalloc
からもらった記憶が。私たちがしなければならないことは、新しく作成された配列の型を指定して、正しく索引付けすることです。 void*
は、これが、インデックスの作成方法を指定していないメモリ上のポインタであることを示します。
*常にオブジェクトのポインタに変換することができるのボイド必ずしも関数ポインタである必要はありません。その変換の信頼性は実装に依存します。 –