C および C の関数に配列を渡す
質問:
なぜ C および C で関数に配列を渡すのですかC コンパイラでは、int dis(char a[1]) などの関数シグネチャで配列の長さを宣言できます。強制されないときは?
答え:
C および C で配列を関数に渡すために使用される構文は、ポインターの受け渡しを可能にする歴史的に奇妙なものです。配列自体ではなく、配列の最初の要素に追加されます。
詳細説明:
C および C では、配列は関数への参照によって渡されません。代わりに、配列の最初の要素へのポインターが渡されます。これは、関数シグネチャ内の [] 表記が実際にはコンパイラによって無視されることを意味します。
影響:
この動作は、あたかも配列は参照によって渡されますが、実際にはポインタのみが渡されます。さらに、関数シグネチャから配列の長さを決定することはできないため、可変長配列の操作が困難になる可能性があります。
歴史的観点:
この構文を許可するという決定は、配列を関数に渡す便利な方法を提供する方法として 1970 年代に行われました。しかし、それ以来、混乱と潜在的なセキュリティ脆弱性を引き起こしています。最新のプログラミングでは、この構文の使用を避け、代わりにポインターを使用して配列を参照によって渡すことをお勧めします。
以上がC と C が関数シグネチャの配列長を無視するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。