Answer : Option B
As address of whole 3D array is being passed in calling function. In declaration we should have some pointer which accepts 3D array address. So, let’s go through all options :
Option A : False, int ** array[30][40][50] this means it is a array of [30][40][50] integer double pointer. but here were are not accepting pointer, we are accepting address and for that single pointer should be there.
Option B : As previous stated we want to accept address through single pointer and in option B it is given so correct.
Option C : Same reasoning as option A, we want to accept address of whole 3D array not some pointer. Option c would be true if some double pointer is passed by calling function.
Option D : Same reasoning as option A.