使用して;
return_type function_name(prim_data_type* param...)
paramは、メモリ内のアドレスを指すポインタであり、そのアドレス内*param
の値です。答えはあなたがこれで何をしたいのかについてですparam
。
char in[20];
「in」は最初の要素のアドレスです。したがって、関数呼び出しで:
write(in, 20);
最初の要素のアドレスを送信しているので、関数の実装では、最初の要素にアクセスしたり*param
、2番目の要素にアクセスし*(param+1)
たりできますparam[1]
。混乱している場所は次のとおりです。
char in = 5;
write(in, 1);
inはアドレス5(00000005)であるため、関数の実装では、そこにある値にアクセスします。このように使用する場合は注意が必要です。
malloc操作の場合:
char* in = malloc(20);
write(in, 20);
in
charの20要素を保持するアドレス(最初の要素のアドレス)へのポインタは、スペースを取ることができます。この関数では、paramポインターを使用してすべての要素にアクセスできます(*param
最初の要素、*(param+7)
またはparam[7]
8.要素)
結論として、別の関数でプライマリデータ型の変数(int、float、char ..)を操作する場合は、;を使用する必要があります。
write(&in);
そうすることで、その書き込み関数の実装で、その変数にアクセスし、*param
混乱することなく値を変更できます。
注:理解を深めるために、ここでは一部の説明を簡略化しています。ここで追加の警告を歓迎します。