Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-11-07 04:59:02
asal
400 orang telah melayarinya

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>
Salin selepas log masuk

Prototaip ini menjana ralat daripada g :

error: expected ‘,’ or ‘...’ before ‘*’ token
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan