为什么在fun函数内和fun函数外打印str的结果是不一样的??

//删除字符串前导0的函数
void fun_head(char*str);
#include
int main()
{
    char str[100]={'\0'};
    gets(str);
    fun_head(str);
    puts(str);

}
void fun_head(char*str)
{
    char*p=str;
     while(*p=='0')
    {
        p++;
    }
    str=p;
    puts(str);
}

在fun_head函数内部,str是形参,你改变了str的指向,让它指向p,而p这个指针已经指向了'0'后面的字符,那你打印的时候肯定只能打印出半截字符串啊
而在main里,str是在main里定义的数组,这两个str不是同一个变量,而且你在函数里改变形参的指向也不会影响外面传进来的实参的实际指向

不一样的结果截图。