I want to have a function that creates an array contain multiplication values of int num, and another function that prints the array out. However, I can't seen to figure out these errors.
My code:
.c file
#include "multiplication.h"
#include <stdio.h> 
int main(){
int arr=multiplication(4);
printArray(4,arr);
}
int multiplication(int num){
 /* initialize array and build*/
    int arr[num][num];
    for(int i=0; i<num;i++){
        printf("row number: %d ",i);
         for(int j=0;j<num;j++){
             printf("column number: %d", j);
            arr[i][j]= (i+1)*(j+1);
         }
    }
    return arr;
    }
    void printArray(int num,int arr[num][num]){
    
    int i;
    for(i=0;i<num;i++){
        for(int j=0;j<num;j++){
            printf("%d ",arr[i][j]);
        }
        
    }
    }
.h file:
int multiplication(int num);
void printArray(int num,int arr[num][num]);
The errors:
multiplication.c:6:14: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'int (*)[*]' [-Wint-conversion]
printArray(4,arr);
             ^~~
./multiplication.h:4:29: note: passing argument to parameter 'arr' here
void printArray(int num,int arr[num][num]);
                            ^
multiplication.c:22:12: warning: incompatible pointer to integer conversion returning 'int [num][num]' from a function with result type 'int' [-Wint-conversion]
    return arr;
           ^~~
multiplication.c:22:12: warning: address of stack memory associated with local variable 'arr' returned [-Wreturn-stack-address]
    return arr;
           ^~~
                    ^
multiplication.c:25:33: note: declared here
    void printArray(int num,int arr[num][num]){
                            ^
 
     
    