私は、配列をcの関数に渡している間に知りたかったのです。パスを取得する配列値のコピーか、渡される配列アドレス(参照)ですか?配列がcの関数に渡されたときに渡されるのは何ですか?配列値または参照アドレスのコピー?
-1
A
答えて
0
パスを取得する配列値のコピーか、渡される配列アドレス(参照)はコピーされていますか?技術的に
、どちら。 C関数では、引数は常に値渡しされます。配列(変数)の場合、関数の引数として渡されている間、配列の最初の要素へのポインタに減衰します。ポインタは、通常どおり、値渡しされます。
しかし、他のポインター型引数と同様に、呼び出された関数から、ポインター(または有効な範囲内にとどまっている限り、ポインター算術による派生ポインター)が指す値を変更する場合は、呼び出し元関数内の実際の配列要素の値も影響を受けます。アレイが、それは暗黙的であり、例えばポワントに減衰関数の引数として渡される
は
1
char * foo(char buffer[])
{
printf("sizeof buff= %d",buffer); // here you will get pointer size not original buf because buffer is decay to pointer as char *buffer
}
int main()
{
char buf[10]="hello";
foo(buf);
}
それはポインタに減衰する理由は時間.ITの中のすべての要素をコピーするためのより高価です配列を呼び出し関数のパラメータに渡します。暗黙のうちにそれはポインタに崩壊する。
関連する問題
- 1. 関数に渡された多次元配列のポインタ型は何ですか?
- 2. 配列をC言語の関数に渡すと、それは常に参照渡しですか?
- 3. C++ポインター配列関数がアドレス渡し
- 4. C:配列のコピーを作成する関数に渡される配列または元の配列を変更する配列
- 5. なぜ配列に渡された配列がnullですか?
- 6. Freemarker - 渡された配列の値にアクセスするには?
- 7. array.filterを適用すると、関数に渡された配列参照が失われます
- 8. 参照された配列==配列
- 9. 配列の.map()イテレータ関数に渡されるものは何ですか?
- 10. C++:構造体の配列を参照渡しで関数に渡す
- 11. 配列がC++の関数に正しく渡されない
- 12. 配列はC++でどのように参照や値、ポインタによって渡されますか?
- 13. プロミスチェーンの参照された関数から値を渡すか?
- 14. どのようにCで配列 "参照"を渡すには?
- 15. C++の関数パラメータとして参照渡し配列を渡す
- 16. C配列での参照渡しの3D配列
- 17. 参照渡しではなく値渡しの配列を送信するC++
- 18. 2D配列がCで渡される
- 19. PHP:関数への参照渡しの配列ですか?
- 20. 関数に渡された配列は、ナノ要素を与える(C++)
- 21. C++:関数への配列参照を渡すのが普通ですか?
- 22. SystemVerilog - パックされた配列のアンパックされた配列の未知のサイズを関数に渡すことはできますか?
- 23. 関数に配列を渡すと値が変更されますか?
- 24. Visual C++で関数に渡されるときに配列のサイズが自動的に変更される
- 25. セッションに渡された渡された配列をLabelに書き込むことができません
- 26. 関数で宣言された配列を返すと、Cのローカル変数のアドレスが返されますか?
- 27. 配列のサイズが関数に渡される
- 28. 配列の1つの要素だけが関数に渡されます。 C++
- 29. Cの関数として渡された構造体の配列
- 30. 特定の数の参照配列を関数にパラメータとして渡すことはできますか?
配列をCの関数に渡すと、最初の変数のアドレスが渡されます。 – VatsalSura
関数に渡された配列は、最初の要素へのポインタに減衰します。 –
配列のベースアドレスが渡されます。 – Rafal