C - その他のオペレータ: 初心者向けの親切なガイド

こんにちは、将来のプログラマーさんたち!今日は、C言語のその他のオペレータの世界に楽しく飛び込んでみましょう。プログラミングが初めてであっても心配しないでください。あなたの親切なガイドとして、すべてをステップバイステップで説明します。それでは、始めましょう!

C - Misc Operators

sizeofオペレータ

旅の準備をしているときに、それぞれのアイテムがどれだけのスペースを占めるか知りたいと思ったことがありますか?それがC言語のsizeofオペレータの役割です。プログラム内のもののサイズを教えてくれます!

sizeofオペレータは、オペランドのサイズ(バイト単位)を返します。以下のように使用します:

#include <stdio.h>

int main() {
int number = 42;
char letter = 'A';

printf("intのサイズ: %zuバイト\n", sizeof(int));
printf("charのサイズ: %zuバイト\n", sizeof(char));
printf("number変数のサイズ: %zuバイト\n", sizeof(number));
printf("letter変数のサイズ: %zuバイト\n", sizeof(letter));

return 0;
}

このコードを実行すると、以下のような出力が見えます:

intのサイズ: 4バイト
charのサイズ: 1バイト
number変数のサイズ: 4バイト
letter変数のサイズ: 1バイト

sizeofはデータ型と変数の両方に使用できます。データがどれだけのメモリを使用しているか正確に知りたいときに非常に便利です!

アドレスオペレータ

次に、アドレスオペレータについて話しましょう。アドレスオペレータはアンパサンド(&)で表されます。コンピュータのメモリを大きなアパートメントビルに例えると、それぞれのアパート(メモリロケーション)には独自のアドレスがあります。&オペレータはそれらのアドレスを見つけるのに役立ちます!

以下に簡単な例を示します:

#include <stdio.h>

int main() {
int age = 25;
printf("ageの値: %d\n", age);
printf("ageのアドレス: %p\n", (void*)&age);

return 0;
}

この出力は以下のようになります:

ageの値: 25
ageのアドレス: 0x7ffd5e7e9994

正確なアドレスはコンピュータごとに異なりますが、アイデアは伝わります!

ディレファレンスオペレータ

アドレスオペレータ(&)が何がどこにあるかを見つけることについてであれば、ディレファレンスオペレータ(*)はそのアドレスに訪れてそこに何があるかを確認することについてです。それは、「私はこのアドレスを持っている。中には何が入っているのか?」と言うようなものです。

以下にそれを実行してみます:

#include <stdio.h>

int main() {
int cookies = 5;
int *p_cookies = &cookies;

printf("cookiesの値: %d\n", cookies);
printf("cookiesのアドレス: %p\n", (void*)&cookies);
printf("p_cookiesの値: %p\n", (void*)p_cookies);
printf("*p_cookiesの値: %d\n", *p_cookies);

return 0;
}

出力:

cookiesの値: 5
cookiesのアドレス: 0x7ffd5e7e9994
p_cookiesの値: 0x7ffd5e7e9994
*p_cookiesの値: 5

*p_cookiesp_cookiesが指すアドレスの値を返すのがディレファレンスの動作です!

三項オペレータ

三項オペレータは、短いif-elseステートメントのようなものです。条件に基づいて値を割り当てるのに最適です。以下はそのシンタックスです:

condition ? value_if_true : value_if_false

以下に例を示します:

#include <stdio.h>

int main() {
int age = 20;
char *status = (age >= 18) ? "adult" : "minor";

printf("%d歳では、あなたは%sです。\n", age, status);

return 0;
}

出力:

20歳では、あなたはadultです。

これは素晴らしいですね!質問をし、2つの可能な答えのうち之一を得るようなものです!

ドットオペレータ

ドットオペレータは、構造体のメンバーにアクセスするために使用されます。構造体は、異なる型の複数のアイテムを保持できるコンテナと考えられます。

以下に例を示します:

#include <stdio.h>

struct Person {
char name[50];
int age;
};

int main() {
struct Person john = {"John Doe", 30};

printf("名前: %s\n", john.name);
printf("年齢: %d\n", john.age);

return 0;
}

出力:

名前: John Doe
年齢: 30

ドットオペレータを使用して、Person構造体のnameageにアクセスします。

诱导オペレータ

诱导オペレータは、先ほど説明したディレファレンスオペレータ(*)と同じものです。诱导オペレータは、「間接的に」ポインタを通じて値にアクセスするものです。

以下に少し複雑な例を示します:

#include <stdio.h>

int main() {
int x = 10;
int *p = &x;
int **pp = &p;

printf("xの値: %d\n", x);
printf("*pの値: %d\n", *p);
printf("**ppの値: %d\n", **pp);

return 0;
}

出力:

xの値: 10
*pの値: 10
**ppの値: 10

ここでは、複数のレベルの诱导を使用しています。ppはポインタのポインタです!

そして、ここまででC言語のすべてのその他のオペレータをカバーしました。お忘れなく、実践は完璧を生むものです。これらのオペレータを自分のコードで試してみてください。ハッピーコーディング!

Credits: Image by storyset