20240806
20240806
逆ポーランド電卓を作る
実装のポイント
スタックから取り出すときの二項の扱い方
+と*はそのまま順番を気にせず、スタックから2個取り出して足し合わせればよい
a + b = b + a
a * b = b * a
/や-は、左辺と右辺の順番が大事
一時変数においてから計算
ポインタとアドレス
*
indirection / dereferencing operator
間接/参照解除演算子
ポインタがさしているオブジェクトにアクセスできる
&と*の使い方。
code:c
int x = 1;
int y = 2;
// ip = a pointer to int
int *ip;
// assigns the address of x to the var ip.
ip = &x; // ip points to x
y = *ip;
*ip = 0;
printf("x=%d y=%d\n", x, y); // x=0 y=1
ip = &z0; // ip now points to z0 ポインタの特徴
ポインターは特定の種類のオブジェクトを指し示す
そのオブジェクトに対応する型を持つ
void型は除く
swap()関数の実装
code:c
/* interchange *px and *py */
void swap(int *px, int *py)
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
int main(void)
{
int a = 0;
int b = 1;
swap (&a, &b);
printf("a=%d b=%d", a, b);
// a=1 b=0
return 0;
}
typedef
新しくデータ型を作成するためのキーワード
ここでは、Lengthがintと同じ意味を持つようになる
code:c
typedef int Length