とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

C言語クイズ

Cクイズ こっちわからん>< - So Many People, So Many Different Ideas

このmain関数が、コメントにある期待通り動くようにMyTypeを定義し、各関数を実装することができるか?

もちろん、mainの中身は変えないこと。そして、使えるのは、C言語の言語要素のみ。

set の中で malloc とか考えたけど,それはダウト。初めからオブジェクトの領域を取ってないとだめっぽ。ここでは MyType を int[1] 型にしてみた。関数宣言の方では MyType が int* と読み替えられるので都合がいい。

/* MyTypeの定義 */
typedef int MyType[1];

void set(MyType m, int val);
void inc(MyType m);
void print(MyType m);

int main(void)
{
 MyType m;
 set(m, 0); /* mを0にセット */
 inc(m); /* mをインクリメント */
 print(m); /* 1と表示される */
 return 0;
}

/* 各関数の実装 */
#include<stdlib.h>
#include<stdio.h>
void set(MyType m, int val){
 *m = val;
}
void inc(MyType m){
 ++*m;
}
void print(MyType m){
 printf("%d", *m);
}