C语言编程问题,下面的程序输出结果是string,还是无法确定?高手大哥帮忙解释一下,谢谢啦!

2024-11-01 05:47:17
推荐回答(2个)
回答1:

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

回答2:

函数返回时会销毁数组,但指针指向的地址应该没变,格式控制%s不输出任何东西