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]){
^