1

私はこれについて多くの投稿を読みましたが、私の問題はもう少し具体的であるようです。動的な 2 次元配列を割り当てることができると思います。

既存のコードのためtypedef、静的配列である a を使用する必要があります。今、これらの配列の不明な数を一時的に保存したいと考えています。ポインターを使用していくつかのバリエーションを試しましたが、コンパイルすることさえできません。

次のコードは、私がやろうとしていることを説明するはずです:

int                     iCount, i;
typedef unsigned char   Buffer[1024];

Buffer       *          BufferArray=NULL;

BufferArray = malloc(iCount * sizeof Buffer*);

for(i=0;i<iCount;i++)
{
    BufferArray[i] = malloc(sizeof(Buffer));
}

これは、エラーが最も少ない私のバージョンです。残っているのは

エラー C2106: '=' の左側のオペランドは左辺値でなければなりません

このトピックが退屈で、頻繁に発生することはわかっています。typedefただし、すでに静的配列である とかなり混乱しています。**だから、ここではポインターは必要ないと思いました。

どんな助けにも感謝します。

4

2 に答える 2

2

typedef が混乱する場合は、(頭の中で) 削除してください。

typedef unsigned char   Buffer[1024];  

したがって、 が表示されるときはBuffer、[1024] の unsigned char 配列と考えてください。

Buffer * BufferArray=NULL; // really it's: unsigned char[] * 

今、あなたは未知の数のこれらの配列を保持しようとしています。実際には 2D 動的配列を使用しているわけではなく、たまたま静的配列を保持する単一の動的配列を使用しているだけです。

typedef unsigned char Buffer[1024];

int main(void) {
    Buffer * BA = NULL;
    int iCount = 5;
    BA = malloc(iCount * sizeof(Buffer));
    BA[0][0] = 10;
    return 0; 
} 

これは動的に作成された配列で、多数の静的な unsigned char 配列 ( )BAを一時的に保持するために使用できます。iCountBuffer

于 2012-10-10T15:46:39.127 に答える
0

動的配列の要素を動的配列から静的配列にコピーする場合。以下の簡単な解決策があります。

#include<stdio.h>
#include<malloc.h>
#define r 2
#define c 5

int main()
{
    char *p;
    char a[r][c];
    int i,j;

    p=(char*)malloc(r*c*sizeof(char));
    gets(p);
    puts(p);

    while(*p!='\0')
    {
        for(i=0;i<=r-1;i++)
        {
            for(j=0; j<=c-1; j++)
            {
                a[i][j] =* p;
                ("%c",a[i][j]);
                p++;
            }
        }
    }
    printf("\n");
    return (0);
}
于 2013-06-12T18:36:46.800 に答える