Can someone confirm if I am thinking right. If I want to change value of pointer so I think I need to pass address of pointer not the copy of pointer

Code:
#include<stdio.h>

#include<stdlib.h>


struct s
{
	int var;
};


int main ()
{
	struct s *sp = NULL;
	
	foo(&sp); // Pass address of sp to function foo
	foo(sp);  // Pass copy of sp  to function foo
	
	return 0;
}