怎么通过函数函数参数 传递字符串指针

如何通过函数函数参数 传递字符串指针?
我搞了个函数 
void func(char *str)
{
  char instr[10]="nihao";
  str=instr;
}
然后想通过调用这个函数把字符串放到str里带出来
main()
{
  char str[10];
  func(str);
  printf("%s",str);
}可为什么不行呢 windows很多api不是这样干的吗 他们是如何做到的呢

------解决方案--------------------
char instr[10]="nihao";
生命周期在fun结束的时候就玩完了。
你str现在指的地方,已经没有了
------解决方案--------------------
void func(char* str)
{
 char instr[10] = "nihao";
 strcpy(str, instr);
}
func中的str是一个指针,在栈上,不是main里的str哦!str=instr只是改变了栈上的这个值,而main里的str没变。

------解决方案--------------------
C/C++ code

void func(char *str, size_t size)
{
   char instr[10]="nihao";
   strcpy_s(str, size, instr);
}

main()
{
   char str[10];
   func(str, sizeof (str) / sizeof (str[0]));
   printf("%s",str);
}

------解决方案--------------------
你只是改变了str指针的指向,并没有在函数中实质性的改变str指向的值