ホームページ  >  記事  >  バックエンド開発  >  2 次元配列を参照渡しするときに C が「*」トークンの前に「expected ',' または '...'」をスローするのはなぜですか?

2 次元配列を参照渡しするときに C が「*」トークンの前に「expected ',' または '...'」をスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 00:41:021007ブラウズ

Why Does C   Throw

2 次元配列への参照を渡す

問題

2 次元配列への参照を関数に渡そうとしたときC の場合、ユーザーは g から「'*' トークンの前に ',' または '...' が必要です」というエラーが発生する可能性があります。このエラーは何を示しているのでしょうか?また、どのように解決すればよいでしょうか?

解決策

このエラーは、do_something() の関数プロトタイプが間違っていることを示しています。コンパイル時に既知の次元を持つ 2 次元配列への参照を渡すには、次の構文を使用する必要があります。

<code class="cpp">void do_something(int (&array)[board_width][board_height]);</code>

パラメータを int array[board_width][board_height] として宣言します。代わりに配列の最初の部分配列へのポインタを渡しますが、これはこの場合望ましい機能ではありません。

説明

参照構文 &array により、実際の配列が確実に渡されます。これにより、関数が配列の内容を直接変更できるようになります。 int (&array)[board_width][board_height] という表記は、パラメータの配列が、board_width と board_height の次元を持つ 2 次元配列への参照であることを指定します。

対照的に、int array[board_width][board_height] ;パラメータ配列を、board_height 整数の 1 次元配列へのポインタとして宣言しているため、配列の 2 次元は無視されます。これにより、構文が正しくないため、エラーが報告されます。

以上が2 次元配列を参照渡しするときに C が「*」トークンの前に「expected ',' または '...'」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。