このプログラムでは、コメントの下に何が起こっているのか分かりません。このプログラムの出力は、Enter temperature#0、#1、#2 ..... 30の31反復であり、次にそれらのユーザ入力値を摂氏に変換する必要があります。私の混乱は、関数呼び出し変換(temps)がどのような目的でどのように機能し、どのようにその関数全体がどのように機能するかにあります。Cコーディング:参照混乱によるループ/呼び出しの場合
上記の出力を達成するためにコードがどのように機能するかについての明確化は素晴らしいでしょう。さらに、convert関数で起こっていることを参照することによって呼び出すことができます。もしそうなら、誰かがそこのダイナミクスを説明してください。
ありがとうございます。
#define COUNT 31
void convert (float heat[]);
void main()
{
float temps[COUNT];
int index;
/*load the array with values*/
for (index = 0; index < COUNT ; index++)
{
printf("Enter temperature #%d: ", index);
scanf("%f", &temps[index]);
}
/*pass the array */
convert(temps);
for (index = 0; index < COUNT ; index++)
printf("%6.2f\n", temps[index]);
}
/*******************convert function ************************/
void convert (float heat[])
{
int index;
for (index = 0; index < COUNT; index++)
{
heat[index] = (5.0/9.0)*(heat[index]-32);
}
}
関数 'convert'は、配列を変更ように、これは、単純な索引付けすることが行うことができ – reuns
配列を関数に渡すとポインタになります(これは明らかです。ポインタ構文を使用して関数を宣言したいと思います: 'void convert(float * heat)')。参照渡し(Cのポインタによる)は、関数が渡された実際の引数を変更できることを意味し、値渡しは関数が引数のローカルコピーに対して機能することを意味します。 –