2017-11-06 20 views
0

関数に配列を渡したいと思います。関数を使って元の配列を変更せずに関数内で変更したいと思います。それはできますか?値が変更されていないC関数と配列

#include <stdio.h> 

void display(int age[]) { 
    age[0]=3; 
    age[1]=4; 
} 
int main() { 
    int ageArray[] = { 2,3 }; 
    display(ageArray);//Passing array element ageArray[2] only. 
    printf("%d", ageArray[0]); 
    return 0; 
} 
+0

コピーを作成し、コピーを渡します。または、呼び出された関数にコピーを作成させる。私は次元が固定されている場合は、それを構造体に埋め込み、構造体を値渡しすることができます。 –

+0

アレイを複製する必要があります。 –

+0

#include void display(int age []) { age [0] = 3; 年齢[1] = 4; } int main() { int ageArray [] = {2,3}; display(ageArray); //配列要素ageArray [2]のみを渡します。 printf( "%d"、ageArray [0]); return 0; }私のコードは次のようなものです。この配列のコピーを作るにはどうすればいいですか? –

答えて

3

C関数に配列を渡すの概念を持っていません。

は、これは私がこれまで持っているものです。関数シグネチャの機能とは独立に渡されたポインタが常にある:

void function(int *Array); 
void function(int Array[]); 

あなたは元の配列の変更を避けたい場合は、配列のコピーを作成する必要があります。そのためには、配列のサイズを渡す必要があります。

void function(int *Array, size_t Size); 

これでコピーを作成できます。

+0

ありがとう –

関連する問題