配列を関数引数として渡す方法 în C

こんにちは、未来のプログラミングスーパースター!? 今日は、C言語の配列と関数の世界に興味深い旅に出発します。あなたの近所の親切なコンピュータサイエンスの先生として、私はこの冒険をステップバイステップでガイドします。それでは、バーチャルな背包を持ち出して、一緒に潜りましょう!

C - Passing Arrays to Function

配列と関数の理解

配列を関数に渡す前に、まず配列と関数について簡単に思い出してみましょう。

什么は配列?

配列は、学校の廊下にあるロッカーの列を思い浮かべてください。それぞれのロッカー(要素)には番号(インデックス)があり、中に何かを保管できます。C言語では、配列を使用して同じ型の複数のアイテムを単一の変数に格納します。

什么は関数?

関数は、メインプログラム内のミニプログラムのようです。特定のタスクを実行するためのインストラクションのセットです。レシピカードが料理帳にあるようなものと思ってください – 特定のタスクを実行する必要があるときに使用できます。

基本を押さえたところで、これらの二つの概念をどのように組み合わせることができるか探ってみましょう!

配列を関数引数として渡す方法

C言語では、配列を関数に渡す方法が複数あります。それぞれの方法を順番に見ていきましょう。

1. 配列を呼び値メソッドで渡す

Cでは、配列を関数に渡す際、実際には配列の最初の要素のアドレスを渡しています。これは、関数内で配列に加えた変更が元の配列に影響を与えることを意味します。

以下に例を示します:

#include <stdio.h>

void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("元の配列: ");
printArray(myArray, size);

return 0;
}

この例では、myArrayprintArray関数に渡しています。まるで配列全体を渡しているように見えますが、実際には最初の要素のポインタを渡しています。

出力:

元の配列: 1 2 3 4 5

2. 配列を参照渡しで渡す

Cでは、配列は常に参照渡しされます。これは、配列を関数に渡す際、実際には配列の最初の要素のポインタを渡していることを意味します。

以下に例を示します:

#include <stdio.h>

void doubleElements(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("元の配列: ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

doubleElements(myArray, size);

printf("修正された配列: ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

return 0;
}

この例では、doubleElements関数が元の配列の各要素を倍にしています。

出力:

元の配列: 1 2 3 4 5
修正された配列: 2 4 6 8 10

3. 2次元配列を関数に渡す

それでは、レベルアップして2次元配列を関数に渡す方法について話しましょう。まるで整个シートを渡しているかのようです!

以下に例を示します:

#include <stdio.h>

void print2DArray(int rows, int cols, int arr[rows][cols]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}

int main() {
int myArray[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

printf("私の2次元配列:\n");
print2DArray(3, 3, myArray);

return 0;
}

この例では、2次元配列をprint2DArray関数に渡しています。関数パラメータに次元を指定することに注意してください。

出力:

私の2次元配列:
1 2 3
4 5 6
7 8 9

4. 文字列の長さを比較する関数

最後に、文字列(文字配列)を関数に渡す方法を見てみましょう。文字列の長さを比較する関数を作成します。

以下に例を示します:

#include <stdio.h>
#include <string.h>

int compareStringLengths(char str1[], char str2[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);

if (len1 > len2) return 1;
if (len1 < len2) return -1;
return 0;
}

int main() {
char string1[] = "Hello";
char string2[] = "World!";

int result = compareStringLengths(string1, string2);

if (result > 0) {
printf("%s は %s より長い\n", string1, string2);
} else if (result < 0) {
printf("%s は %s より長い\n", string2, string1);
} else {
printf("%s と %s は同じ長さ\n", string1, string2);
}

return 0;
}

この例では、二つの文字列をcompareStringLengths関数に渡し、長さを比較しています。

出力:

World! は Hello より長い

結論

おめでとうございます!C言語のプログラミングスキルを一歩進めることができました。配列を関数に渡す方法を学びました。練習すれば完璧になりますので、ぜひこれらの概念を自分のプログラムで実験してみてください。

以下に、私たちがカバーした方法の簡単な参照表を示します:

メソッド 説明
呼び値メソッドで配列を渡す 最初の要素のアドレスを渡す
参照渡しで配列を渡す Cでは常に参照渡し
2次元配列を関数に渡す 次元を関数パラメータで指定
文字列を渡す 文字列を操作または比較

codingを続け、学び続け、そして何より楽しんでください!??

Credits: Image by storyset