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

解决方案 »

  1.   

    char instr[10]="nihao";
    生命周期在fun结束的时候就玩完了。
    你str现在指的地方,已经没有了
      

  2.   

    void func(char* str)
    {
     char instr[10] = "nihao";
     strcpy(str, instr);
    }
    func中的str是一个指针,在栈上,不是main里的str哦!str=instr只是改变了栈上的这个值,而main里的str没变。
      

  3.   


    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);
    }
      

  4.   

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

  5.   

    void func(char *str)
    {
      char * instr ="nihao"; //你这么玩就OK了
      str=instr;
    }