私は構造体を初めて使用しています。 AのメンバーがB型の構造体になるようにネストされた構造体を作成したい。私がこれまでに持っていたコードを以下に示します。他の構造体の内部で構造体を使用する方法(mallocと2D配列を使用しているのですか?)C
typedef struct B
{
int b1;
} b;
typedef struct A
{
b a1;
}a;
しかし、私はまた、「A1」はダイナミックな2D配列である必要があり、私でした次のコード(これはi「は、配列のためには、このためのポインタへのポインタを使用するように右であるかどうかわかりません'実行時に設定するサイズ):
typedef struct B
{
int b1;
} b;
typedef struct A
{
b **a1;
}a;
メモリを格納するために、mallocを使用しました(エラー検出部分はありませんでした)。私はa1の各メンバーをxで参照し比較する必要があります(下のaとbは整数です)。私はこれをすることができますか?:
a* one;
b** two;
one= malloc(10* sizeof(a*));
two= malloc(10* sizeof(b*));
for(x = 1; x <= 10; x++)
{
two[x] = malloc(10* sizeof(b));
}
if(one[x].two[a][b] == x)
one[x].two[a][b].b1 =2;
申し訳ありません私のコードは全く意味をなさない。
式b ** a1は2次元配列ではありません。これは、ポインタを保持する変数へのポインタです。 –
@ clarasoft-itが書いたものに追加するには:2D配列としても使用することはできません。 2D配列を割り当てて扱う方法を示す十分なQ&Aがここにあります。それらを読むと、扱いがはるかに簡単です。 – Olaf
私はそれを手に入れました!基本的に、xがタイプbでない限り、それは動作しません。だから私はちょうど同様の比較を行うことができるように、b、int b2に別のメンバーを追加しました –