#include <stdio.h>
#include <stdint.h>
int a[][3] = {
{10, 20, 30},
{40, 50, 60},
{70, 80, 90}
};
int main(void)
{
int *p[] = {a[0], a[1], a[2]};
int (*q)[3] = a;
// 仮想アドレス
uintptr_t addr_a = 0x1000;
uintptr_t addr_p = 0x2000;
uintptr_t addr_q = 0x3000;
printf("sizeof(int) = %zu\n", sizeof(int)); printf("sizeof(int *) = %zu\n", sizeof(int *)); printf("sizeof(int (*)[3]) = %zu\n", sizeof(int (*)[3])); printf("sizeof a = %zu\n", sizeof a
); printf("sizeof p = %zu\n", sizeof p
); printf("sizeof q = %zu\n", sizeof q
);
printf("&a = 0x%lx\n", (unsigned long)addr_a
); printf("&p = 0x%lx\n", (unsigned long)addr_p
); printf("&q = 0x%lx\n", (unsigned long)addr_q
);
printf("a[1][1] = %d\n", a
[1][1]); printf("*a[1] = %d\n", *a
[1]); printf("(*a + 1)[1] = %d\n", (*a
+ 1)[1]); printf("*(a + 1)[1] = %d\n", *(a
+ 1)[1]);
printf("p[1][1] = %d\n", p
[1][1]); printf("*p[1] = %d\n", *p
[1]); printf("(*p + 1)[1] = %d\n", (*p
+ 1)[1]); printf("*(p + 1)[1] = %d\n", *(p
+ 1)[1]);
printf("q[1][1] = %d\n", q
[1][1]); printf("*q[1] = %d\n", *q
[1]); printf("(*q + 1)[1] = %d\n", (*q
+ 1)[1]); printf("*(q + 1)[1] = %d\n", *(q
+ 1)[1]);
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CgppbnQgYVtdWzNdID0gewogICAgezEwLCAyMCwgMzB9LAogICAgezQwLCA1MCwgNjB9LAogICAgezcwLCA4MCwgOTB9Cn07CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgKnBbXSA9IHthWzBdLCBhWzFdLCBhWzJdfTsKICAgIGludCAoKnEpWzNdID0gYTsKCiAgICAvLyDku67mg7PjgqLjg4njg6zjgrkKICAgIHVpbnRwdHJfdCBhZGRyX2EgPSAweDEwMDA7CiAgICB1aW50cHRyX3QgYWRkcl9wID0gMHgyMDAwOwogICAgdWludHB0cl90IGFkZHJfcSA9IDB4MzAwMDsKCiAgICBwcmludGYoInNpemVvZihpbnQpID0gJXp1XG4iLCBzaXplb2YoaW50KSk7CiAgICBwcmludGYoInNpemVvZihpbnQgKikgPSAlenVcbiIsIHNpemVvZihpbnQgKikpOwogICAgcHJpbnRmKCJzaXplb2YoaW50ICgqKVszXSkgPSAlenVcbiIsIHNpemVvZihpbnQgKCopWzNdKSk7CiAgICBwcmludGYoInNpemVvZiBhID0gJXp1XG4iLCBzaXplb2YgYSk7CiAgICBwcmludGYoInNpemVvZiBwID0gJXp1XG4iLCBzaXplb2YgcCk7CiAgICBwcmludGYoInNpemVvZiBxID0gJXp1XG4iLCBzaXplb2YgcSk7CgogICAgcHJpbnRmKCImYSA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZylhZGRyX2EpOwogICAgcHJpbnRmKCImcCA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZylhZGRyX3ApOwogICAgcHJpbnRmKCImcSA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZylhZGRyX3EpOwoKICAgIHByaW50ZigiKiphID0gJWRcbiIsICoqYSk7CiAgICBwcmludGYoImFbMV1bMV0gPSAlZFxuIiwgYVsxXVsxXSk7CiAgICBwcmludGYoIiphWzFdID0gJWRcbiIsICphWzFdKTsKICAgIHByaW50ZigiKCphICsgMSlbMV0gPSAlZFxuIiwgKCphICsgMSlbMV0pOwogICAgcHJpbnRmKCIqKGEgKyAxKVsxXSA9ICVkXG4iLCAqKGEgKyAxKVsxXSk7CgogICAgcHJpbnRmKCIqKnAgPSAlZFxuIiwgKipwKTsKICAgIHByaW50ZigicFsxXVsxXSA9ICVkXG4iLCBwWzFdWzFdKTsKICAgIHByaW50ZigiKnBbMV0gPSAlZFxuIiwgKnBbMV0pOwogICAgcHJpbnRmKCIoKnAgKyAxKVsxXSA9ICVkXG4iLCAoKnAgKyAxKVsxXSk7CiAgICBwcmludGYoIioocCArIDEpWzFdID0gJWRcbiIsICoocCArIDEpWzFdKTsKCiAgICBwcmludGYoIioqcSA9ICVkXG4iLCAqKnEpOwogICAgcHJpbnRmKCJxWzFdWzFdID0gJWRcbiIsIHFbMV1bMV0pOwogICAgcHJpbnRmKCIqcVsxXSA9ICVkXG4iLCAqcVsxXSk7CiAgICBwcmludGYoIigqcSArIDEpWzFdID0gJWRcbiIsICgqcSArIDEpWzFdKTsKICAgIHByaW50ZigiKihxICsgMSlbMV0gPSAlZFxuIiwgKihxICsgMSlbMV0pOwoKICAgIHJldHVybiAwOwp9