スポンサーリンク

配列を引数に指定

まずは、下記のように、配列引数に指定する方法です。

void initArr(int arr[SIZE]){
	//省略
}

実際の関数呼び出し時には、配列のポインタを引数に渡すことになります。

	int arr[SIZE];
	
	initArr(arr);

下記がサンプルコードになります。関数内で配列の要素を初期化した後、配列の要素をprintf出力しています。

 $ cat sample1.c 
#include <stdio.h>
#define SIZE 5

void initArr(int arr[SIZE]){
	int i;
	for(i = 0; i < SIZE; i++){
		arr[i] = 789;
	}
}

int main(){
	int arr[SIZE];
	int i;
	
	initArr(arr);
	
	for(i = 0; i < SIZE; i++){
		printf("%d ", arr[i]);
	}	
	
	return 0;
}

下記が実行結果になります。関数内で配列の要素が直接書き換えられていて、関数を抜けても配列の要素の値が保持されているのが確認できます。
 $ gcc sample1.c -o sample
 $ ./sample 
789 789 789 789 789 

スポンサーリンク

要素数を指定せずに配列を引数に指定

続いて、要素数を指定せずに配列を引数に指定する方法です。

void initArr(int arr[]){
	//省略
}

同様に、実際の関数呼び出し時には、配列のポインタを引数に渡すことになります。

下記がサンプルコードになります。

 $ cat sample2.c 
#include <stdio.h>
#define SIZE 5

void initArr(int arr[]){
	int i;
	for(i = 0; i < SIZE; i++){
		arr[i] = 123;
	}
}

int main(){
	int arr[SIZE];
	int i;
	
	initArr(arr);
	
	for(i = 0; i < SIZE; i++){
		printf("%d ", arr[i]);
	}	
	
	return 0;
}

下記が実行結果になります。
 $ gcc sample2.c -o sample
 $ ./sample 
123 123 123 123 123 

スポンサーリンク

配列へのポインタを引数に指定

最後に、配列へのポインタを引数に渡す方法です。

void initArr(int* arr){
	//省略
}

こちらも同様に、実際の関数呼び出し時には、配列のポインタを引数に渡すことになります。

下記がサンプルコードになります。

 $ cat sample3.c 
#include <stdio.h>
#define SIZE 5

void initArr(int* arr){
	int i;
	for(i = 0; i < SIZE; i++){
		arr[i] = 456;
	}
}

int main(){
	int arr[SIZE];
	int i;
	
	initArr(arr);
	
	for(i = 0; i < SIZE; i++){
		printf("%d ", arr[i]);
	}	
	
	return 0;
}

下記が実行結果になります。
 $ gcc sample3.c -o sample
 $ ./sample 
456 456 456 456 456 

スポンサーリンク