Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyalurkan Rujukan kepada Tatasusunan Dua Dimensi dengan betul dalam C?

Bagaimana untuk Menyalurkan Rujukan kepada Tatasusunan Dua Dimensi dengan betul dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 04:59:02317semak imbas

How to Correctly Pass References to Two-Dimensional Arrays in C  ?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn