サンプル コードのスニペットを次に示します。
typedef struct Test{
int a;
struct Test *T;
}T1;
typedef struct Test_2{
T1 *tests;
}T2;
T2 *t2;
T1 *t1;
int main(){
t2=(T2*)malloc(sizeof(T2));
t1=(T1*)malloc(sizeof(T1)*4);
t2->tests=(T1*)malloc(sizeof(T1)*4);
t2->(tests+2)->a=1; //LINE 1
(t1+2)->a=2; //LINE 2
printf("%d\n%d",t2->tests[1].a,t1[2].a);
}
出力について混乱していたので、いくつかのコードを実行していて、このサンプルを作成しました。使えばt2->tests[2].a=1
問題なく動きます。ただし、この場合、コンパイラは次をスローします
error: expected identifier before '(' token
.
LINE 2 でも同様のことをしました。2つの違いは何ですか?