Melalukan Rujukan kepada Tatasusunan Dua Dimensi dalam C
Dalam C , menghantar rujukan kepada tatasusunan dua dimensi kepada fungsi boleh menjadi rumit. Pertimbangkan kod berikut:
<code class="cpp">const int board_width = 80; const int board_height = 80; void do_something(int[board_width][board_height]& array); //function prototype</code>
Prototaip ini menjana ralat daripada g :
error: expected ‘,’ or ‘...’ before ‘*’ token
Penjelasan dan Penyelesaian Ralat
Ralat ini menunjukkan bahawa ada sesuatu yang hilang di mana asterisk (*) diletakkan. Pengisytiharan rujukan hendaklah menggunakan sintaks berikut:
<code class="cpp">void do_something(int (&array)[board_width][board_height]);</code>
Dengan menambahkan kurungan di sekeliling tatasusunan, kami membuat rujukan kepada keseluruhan tatasusunan dua dimensi. Ini membolehkan fungsi do_something mengubah suai tatasusunan secara langsung.
Perbezaan daripada Perisytiharan Penunjuk
Perhatikan bahawa ini berbeza daripada mengisytiharkan parameter dengan jenis penuding:
<code class="cpp">void do_something(int array[board_width][board_height]);</code>
Dalam kes ini, hanya penuding kepada sub-tatasusunan pertama tatasusunan dua dimensi dilalui, mengabaikan board_width. Ini kerana tatasusunan dalam C mereput kepada penunjuk apabila ia dihantar ke fungsi. Oleh kerana rujukan diminta secara eksplisit dalam prototaip, pengisytiharan ini tidak betul.
Pengiraan Saiz
Apabila menggunakan rujukan, sizeof(array) dalam fungsi akan menghasilkan saiz (int[lebar_papan][tinggi_papan]). Sebaliknya, menggunakan pengisytiharan berasaskan penunjuk akan menghasilkan sizeof(int(*)[board_height]), yang sepadan dengan saiz penunjuk.
Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Rujukan kepada Tatasusunan Dua Dimensi dengan betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!