为了验证你的程序,我特意在Linux下运行了,结果和Windows上不同,可以说结果是不定的。
你把要注意,p你是作为形参传值进入fun()的,fun从根本上不可能改变p的值。事实也是如此。
换一句话说在运行函数的时候,p被复制给了临时变量s,你的那个s和p根本是两个指针,运行了之后,s指向了你的那个数组a,p没有变。
那么你能改变的是什么呢?
将main中“char *p” 改为 “ char p[]="helloworld" ”,再运行,你就明白了。
给函数传递指针,你可以改变指针所指区域的值,但是你不能改变指针本身的值。
所以你的程序在Linux上运行出现错误。什么也没输出来。
函数返回时会销毁数组,但指针指向的地址应该没变,格式控制%s不输出任何东西