1

unsigned char *任意のデータを格納するための を含む構造体があります。ある時点で、このデータを 2 次元配列であるかのように使用したいと考えています。これは私がそれを行う方法です:

#define DATA_SIZE 10
unsigned char *data = malloc(DATA_SIZE * DATA_SIZE * sizeof(unsigned char));

// this is not allowed
unsigned char (* matrix)[DATA_SIZE] = (unsigned char*[DATA_SIZE]) &data;

// this gives a warning and doesn't work at all
unsigned char (* matrix)[DATA_SIZE] = (unsigned char **) &data;

任意のデータへのポインタを2次元配列にキャストしたいのですが、もちろん配列型にはキャストできません。これについてどうすればいいですか?

前もって感謝します。

4

1 に答える 1

4

キャストの構文が間違っています。

unsigned char (* matrix)[DATA_SIZE] = (unsigned char(*)[DATA_SIZE]) data;

#defineを削除して修正した後に動作します=

#define DATA_SIZE 10

    unsigned char *data = malloc(DATA_SIZE * DATA_SIZE * sizeof(unsigned char));

    // this is the correct way to cast
    unsigned char (* matrix)[DATA_SIZE] = (unsigned char(*)[DATA_SIZE]) data;
于 2012-09-25T11:06:19.053 に答える