Because int score[10,15]; is an incorrect declaration of a two dimensional array. the two dimensional array index's should be represented separately enclosed between [ ] so the correct declaration is int score[10][15];
A is a derived datatype used to store multiple elements in a single variable of same data type. so an array can store only elements of its datatype declared only. if an array is declared as int a[]; then the array a[] can store only integer elements.
Because array is a variable holding multiple values. so an entire array can be passed only by its address. we cannot pass the all elements in an array at a time to a function. so we pass the address or reference of the array to the function. since address is passed to the function, then the called function parameters should be pointers to catch that address. because pointers can only catch the address of other variables.