2019年5月3日 星期五

C語言 傳遞2維(2D array)參數 到 函數

C語言  傳遞2維(2D array)參數 到 函數 

源自於
https://www.geeksforgeeks.org/pass-2d-array-parameter-c/
#include <stdio.h>
int M = 3;
int N = 3;

void print(int arr[M][N])
{
    int i, j;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
            printf("%d ", arr[i][j]);
        printf("\n"); 
    } 
}

int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    print(arr);
    return 0;
}

輸出畫面 
1 2 3 
4 5 6 
7 8 9 

#include <stdio.h>
int N = 3;

void print(int arr[][N], int m)
{
    int i, j;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < N; j++)
            printf("%d ", arr[i][j]);
        printf("\n");
    } 
}

int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    print(arr, 3);
    return 0;
}


輸出畫面 
1 2 3 
4 5 6 
7 8 9 


#include <stdio.h>
void print(int *arr, int m, int n)
{
    int i, j;
    for (i = 0; i < m; i++)
{
      for (j = 0; j < n; j++)
        printf("%d ", *((arr+i*n) + j));
 printf("\n");
}
}
  
int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3, n = 3;
  
    // We can also use "print(&arr[0][0], m, n);"
    print((int *)arr, m, n);
    return 0;

}

=========================================
// The following program works only if your compiler is C99 compatible.
#include <stdio.h>
  
// n must be passed before the 2D array
void print(int m, int n, int arr[][n])
{
    int i, j;
    for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
        printf("%d ", arr[i][j]);
}
  
int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3, n = 3;
    print(m, n, arr);
    return 0;
}





沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...