Melewati array 2d untuk berfungsi dengan python

Pada postingan sebelumnya, kita telah membahas bagaimana cara mengalokasikan memori untuk array 2D secara dinamis. Posting ini akan membahas bagaimana kita bisa meneruskan array 2D ke fungsi bahasa pemrograman C

1. Untuk Array Statis

Jika kita mengetahui batasan array pada waktu kompilasi, kita dapat meneruskan array 2D statis ke fungsi di C, seperti yang ditunjukkan di bawah ini

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#include

#tentukan M5

#tentukan N5

 

// Di sini parameternya adalah array 2D statis

batal tetapkan(int arr[M][N])        // or, use `arr[][N]`

{

    untuk (int i = 0; i < M; i++)

    {

        untuk (int j = 0; j < N; j++) {

            arr[i][j] = i + j;

        }

    }

}

 

// Program untuk meneruskan larik 2D ke fungsi di C

int utama(batal)

{

    int arr[M][N];

 

    tetapkan(arr);

 

    // cetak larik 2D

    untuk (int i = 0; i < M; i++)

    {

        untuk (int j = 0; j < N; j++) {

            printf("%3d", arr[i][j]);

        }

        printf("\n");

    }

 

    kembalikan 0;

}

Unduh  Jalankan Kode

Keluaran

0  1  2  3  4
1  2  3  4  5
2  3  4  5  6
3  4  5  6  7
4  5  6  7  8

 
Jika kita tidak mengetahui batasan array pada waktu kompilasi, kita perlu meneruskan batasan array ke fungsi, seperti yang ditunjukkan di bawah ini. Ini hanya akan berfungsi jika array diteruskan setelah indeks ke fungsi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include

 

// Di sini parameternya adalah array 2D statis

batalkan tetapkan(int m, int n, int arr[m][n])

{

    untuk (int i = 0; i < m; i++)

    {

        untuk (int j = 0; j < n; j++) {

            arr[i][j] = i + j;

        }

    }

}

 

// Program untuk meneruskan larik 2D ke fungsi di C

int utama(batal)

{

    int m = 5;

    int n = 5;

 

    int arr[m][n];

 

    tetapkan(m, n, arr);

 

    // cetak larik 2D

    untuk (int i = 0; i < m; i++)

    {

        untuk (int j = 0; j < n; j++) {

            printf("%3d", arr[i][j]);

        }

        printf("\n");

    }

 

    kembalikan 0;

}

Unduh  Jalankan Kode

Keluaran

0  1  2  3  4
1  2  3  4  5
2  3  4  5  6
3  4  5  6  7
4  5  6  7  8

2. Menggunakan Array of Pointer

Ketika batas array tidak diketahui hingga runtime, kita dapat secara dinamis membuat array pointer dan mengalokasikan memori secara dinamis untuk setiap baris. Kemudian kita bisa meneruskan array pointer ke suatu fungsi, seperti yang ditunjukkan di bawah ini

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

#include

#include

 

// Di sini, parameternya adalah larik pointer

batal tetapkan(int** arr, int m, int n)

{

    untuk (int i = 0; i < m; i++)

    {

        untuk (int j = 0; j < n; j++) {

            arr[i][j] = i + j;

        }

    }

}

 

// Program untuk meneruskan larik 2D ke fungsi di C

int utama(batal)

{

    int m = 5;

    int n = 5;

 

    // secara dinamis membuat array pointer dengan ukuran `m`

    int **arr = (int **)malloc(m * sizeof(int *));

 

    // secara dinamis mengalokasikan memori dengan ukuran `n` untuk setiap baris

    untuk (int r = 0; r < m; r++) {

        arr[r] = (int *)malloc(n * sizeof(int));

    }

 

    tetapkan(arr, m, n);

 

    // cetak larik 2D

    untuk (int i = 0; i < m; i++)

    {

        untuk (int j = 0; j < n; j++) {

            printf("%3d", arr[i][j]);

        }

        printf("\n");

    }

 

    // membatalkan alokasi memori

    untuk (int i = 0; i < m; i++) {

        gratis(arr[i]);

    }

    gratis(arr);

 

    kembalikan 0;

}

Unduh  Jalankan Kode

Keluaran

0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8

3. Menggunakan larik 1D

Kita bahkan dapat menggunakan larik 1D untuk mengalokasikan memori untuk larik 2D. Ini dapat dilakukan secara statis dan dinamis, seperti yang ditunjukkan di bawah ini

Bagaimana Anda meneruskan array 2D ke suatu fungsi dengan Python?

from array import * # import all package related to the array. arr1 = [[1, 2, 3, 4], [8, 9, 10, 12]] # menginisialisasi elemen array. print(arr1) # mencetak elemen arr1. # Gunakan fungsi insert() untuk menyisipkan elemen yang berisi dua parameter .

Bisakah Anda meneruskan array 2D ke suatu fungsi?

Kita bisa meneruskan larik 2D sebagai argumen ke fungsi di C dengan dua cara; . by passing the entire array as an argument, or passing the array as a dynamic pointer to the function.

Bagaimana Anda meneruskan array 2D ke suatu fungsi dengan referensi?

Ada tiga cara untuk meneruskan larik 2D ke suatu fungsi. .
Parameternya adalah larik 2D int larik[10][10]; . .
Parameternya adalah array yang berisi pointer int *array[10];

Bagaimana Anda meneruskan array ke suatu fungsi dengan Python?

Kita perlu mengimpor array, dan setelah itu, kita akan membuat array dengan tipe data dan elemennya, lalu kita akan meneruskannya ke fungsi untuk mengulang elemen di . .