3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CAdvent Calendar 2024

Day 9

初心者向けにC言語チートシートを自分なりにまとめてみた #2

Last updated at Posted at 2024-12-08

前回

マクロ (macro)

マクロはただ単にコードを置換するだけのものです。

#include <stdio.h>

#define TIME 5
// #define DEBUG

int main() {
    int a = 10;
    
    for (int i = 0; i < TIME; i++) {
        a += 4;
        // DEBUGが定義されているときのみ printf("i: %d, a: %d\n", i, a); が処理される
#ifdef DEBUG
        printf("i: %d, a: %d\n", i, a);
#endif
    }

    printf("a: %d", a);

    return 0;
}

三項演算子 (ternary operator) b ? x : y

三項演算子はif文と違って短く、簡潔に書くことができます。
どちらがいいかは目的によって異なってきます。

int a = 8, res;

// if文
if (a == 8) {
    res = 1;
} else {
    res = 2;
}

// 三項演算子
res = (a == 8 ? 1 : 2);

定数2 (const)

前回の定数もマクロですが、ただ単に置換しているだけで定数2とは違って文字列となっています。

const double TAX = 1.10;

ポインタ (pointer) &n

ポインタ変数は変数のアドレスを入れるためのもので、記述方法は変数名の前に*を付けます。
変数のアドレスは&をすでにつくられた変数名の手前に置きます。

以下のように記述します。

int n = 5; // 整数型変数num をつくって 5 を入れる
int *p = &n; // ポインタ変数p に n のアドレスを入れる

// ポインタ変数(nのアドレス)を出力
printf("%p\n", p); // 出力: "0x7ffdf0fdd0d4"

// ポインタの参照元(n)の数値を出力
printf("%d\n", *p); // 出力: "5"

ポインタはscanf() のように返り値をそのまま代入せずに呼ぶだけで関数内で値を代入することができます。
%p はポインタのフォーマット指定子です。

最後に

三項演算子やマクロって便利ですな!
昔、ポインタで一度混乱したことがありますが、変数(箱)のアドレス(住所)を記したメモ書きと思えばイメージが湧くでしょう。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?