Document

C の復習
演習
• Hello World を標準出力に表示せよ。
• Hello World を標準エラー出力に表示せよ。
• English
– Output “Hello World” on standard output.
– Output “Hello World” on standard error output.
演習
• 2つの引数のうち大きい方を返すマクロを定
義し、int 型変数を使って動作確認を行え。
• English
– Define a macro that returns a larger value from
two arguments.
演習
• 関数の引数をポインタ型にした場合、関数に
渡される変数の挙動を確認せよ。
• Please check the behaviour of an argument to
a function that is given by pointer type.
演習
• int **** 型の変数を宣言し,mallocにより領
域を確保せよ.値を代入し,表示することによ
り,領域が確保できていることを確認せよ.
• English
– Declare a variable whose type is int **** and
allocate memory to the variable using malloc
function. After initialization, please input some
values to all of allocated area.
演習
• char * 型の変数を引数として受け取り、それを文字列
として標準出力に表示する関数を書き、この関数を
main関数から呼べ。
• 上述の関数とmain関数を別ファイルとし、分割コンパ
イルして実行形式を作れ。
• English
– Write a function which receives a char * type argument
and shows a string pointed by the argument on standard
output. Then, call the function from the main function.
– Please write the above function in a different file from a
file that includes main function, and create an executable
file using separate compilation.
2011/10/20追加
演習
• 返り値がint型で2つのint型変数を引数とし、
加算、減算、乗算、除算を行う、add、sub、
mul、divという名前の関数を作成し、関数ポイ
ンタの配列を利用して呼び出すコードを書け。
たとえば、func[0]ならばadd、func[1]ならば
subという具合。(funcの部分は関数ポインタ
の形式に従って正しく記述すること)
演習
• Please write functions perform addition,
subtractoin, multiplication, and division
named add,sub,mul,div, whose return value is
int type and arguments are two integer
variables. Then, call these functoins an array
of pointers of these functions.
演習
• 以下のコードの動作を理解せよ。
• Please check the behaviour of the following
code.
#include <stdio.h>
void hoge(char *str1){ printf("%s\n",str1);}
void (*func(char *str))(char *){
printf ("func:%s\n",str);
return hoge;
}
int main(int argc, char *argv[]){
void (*call)(char *);
call=func("test");
call("func pointer");
return 0;
}
演習
• 以下の関数を呼び出すmain関数を記述し、
動作を確認せよ
• Please write a main function that calls the
following functions and check their behaviour.
void hoge(void) { printf("hoge\n");}
void (*a(void))(void){ printf("a\n");return hoge;}
void (*(*b(void))(void))(void){ printf("b\n"); return a;}
void (*(*(*c(void))(void))(void))(void){printf ("c\n"); return b;}
演習
• 直前の関数それぞれに異なる文字列を引数
として渡せるように修正し、標準出力に表示し
て動作を確認せよ。
• Please modify the functions in the previous
problem to accept a char * type argument and
check the behaviour by showing strings on
stdout.