Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melepasi Tatasusunan Berbilang Dimensi dengan betul kepada Fungsi dalam C?

Bagaimanakah Saya Boleh Melepasi Tatasusunan Berbilang Dimensi dengan betul kepada Fungsi dalam C?

Mary-Kate Olsen
Lepaskan: 2025-01-01 13:41:10
asal
700 orang telah melayarinya

How Can I Correctly Pass a Multidimensional Array to a Function in C  ?

Melalui Tatasusunan Berbilang Dimensi kepada Berfungsi dalam C

Dalam coretan kod ini, percubaan dibuat untuk menghantar tatasusunan berbilang dimensi gaya C kepada fungsi yang mengharapkan tatasusunan penunjuk integer:

#include<stdio.h>
void print(int *arr[], int s1, int s2) {
    ...
}

int main() {
    int a[4][4] = {{0}};
    print(a,4,4);
}
Salin selepas log masuk

Kod ini disusun dalam C tetapi tidak dalam C. Inilah sebabnya:

  • Dalam C, tatasusunan berbilang dimensi boleh mereput menjadi penunjuk kepada elemen pertamanya. Ini bermakna kod di atas adalah bersamaan dengan:
print(&a[0],4,4);
Salin selepas log masuk
  • Dalam C , pereputan ini bukan dibenarkan. Jenis tatasusunan int4 tidak boleh ditukar secara tersirat kepada jenis penunjuk int**. Ini menerangkan mesej ralat:

    cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
    Salin selepas log masuk

Penyelesaian:

Untuk menghantar tatasusunan berbilang dimensi kepada fungsi dalam C , seseorang mesti menukar secara eksplisit ia ke penunjuk jenis yang sesuai. Ini boleh dicapai menggunakan teknik berikut:

#include<stdio.h>
void print(int **arr, int s1, int s2) {
    ...
}

int main() {
    int a[4][4] = {{0}};
    print((int **)a,4,4);
}
Salin selepas log masuk

Dengan menukar tatasusunan secara eksplisit kepada penuding menggunakan cast (int )**, kod itu kini menyusun dan bertindak seperti yang dimaksudkan dalam kedua-dua C dan C .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Tatasusunan Berbilang Dimensi dengan betul kepada Fungsi 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