typedef クイズ

C の型宣言って初心者には難しいよね、というネタ。

ポインタ編

以下の2つの文が同じ意味になるように typedef 文を書け。

int *p;
pint p;

配列編

以下の2つの文が同じ意味になるように、typedef 文を書け。

int a[10];
aint a;

関数ポインタ編

以下のプログラムで10が出力されるように typedef を追加せよ。

#include <stdio.h>

static
int func()
{
  return 10;
}

int
main()
{
  pfunc f = func;
  printf("%d\n", f());
  return 0;
}

関数ポインタの配列編

以下のプログラムがコンパイルできるように、pfunc_array を typedef で宣言せよ。

#include <stdio.h>
#include <math.h>

int
main()
{
  int i;
  pfunc_array funcs = {sin, cos, tan};
  for (i = 0; i < 3; i++)
    {
      printf("%f\n", funcs[i](0.0));
    }
  return 0;
}