ポインタを使った 2 つの数値の加算

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

C言語プログラミングでは、ポインタを使って変数のアドレスを扱います。ここでは、C言語でポインタを使って2つの数を足す方法を学びます。

注意: コーディングの練習やgccを使ったコンパイルと実行の方法を学ぶために、~/project/main.c ファイルを自分で作成する必要があります。

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} c/operators -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} c/pointers -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} c/memory_address -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} c/user_input -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} c/output -.-> lab-123192{{"ポインタを使った 2 つの数値の加算"}} end

変数の宣言

プログラムの最初に、3つの変数を宣言します。ユーザーの入力を格納する2つの整数型変数と、これら2つの整数型変数を指すために使用する1つの整数型ポインタ変数です。以下はそのコードです。

int first, second, *p, *q, sum;

ユーザー入力の取得

ここでは、ユーザーから2つの整数を取得する必要があります。これには、以下に示すように scanf() 関数を使用します。

printf("Enter two integers to add using pointers: ");
scanf("%d %d", &first, &second);

変数を指す

次に、先ほど宣言した整数型変数(firstsecond)を指す2つのポインタを宣言します。& 演算子を使って整数型変数のアドレスを取得し、それをポインタに格納します。以下にそのコードを示します。

p = &first;
q = &second;

ポインタを使って数値を足す

これで整数を指すポインタが用意できたので、ポインタを使ってそれらの値にアクセスし、足し合わせることができます。以下はそのコードです。

sum = *p + *q;

上記のコードでは、* 演算子が pq が指すアドレスに格納されている値(つまり最初と2番目の整数)を取得します。

結果の出力

最後に、以下に示すように printf() 関数を使って結果を出力します。

printf("The sum of the entered numbers is: %d", sum);

まとめ

この実験では、C言語でポインタを使って2つの数値を足す方法を学びました。2つの整数型変数と、それらの整数を指す1つの整数型ポインタ変数を宣言しました。その後、scanf() を使って整数の値を取得し、ポインタを使ってそれらを足し合わせました。最後に、printf() を使って合計を出力しました。