Anwer is B.
A) scope of the static variable is local to the function in which it is defined . if you want to have global scope you should use extern.(global variable) so this is wrong .
B) static variable is stored in heap not in stack . It can live throught the progam execution . this option is correct.
C)static variable can't be modified when passing as argument in function . If you want to modify it you have to pass the base address of the variable (using pointers) .
https://www.tutorialspoint.com/cprogramming/c_storage_classes.htm