C语言局部变量问题

2025-03-12 18:30:49
推荐回答(3个)
回答1:

第一个问题楼上说的已经够清楚了。
第二个问题呢,是这样,返回的是指针类型的,是地址,main中通过函数把"hellow world"所在地首地址传给了str,但是传完之后,hellow world这个局部变量就被系统释放了,没了,它的地址已经保存在str里了没错,可是它指向的值没了,可能会发生空指针错误

回答2:

你说的没错。但是要知道,sum函数是有返回值的,c的值在程序结束时已经返回了,所以在主程序中可以通过k=sum();来获取c的值,也就是,把c的值传递给变量k了。

回答3:

这么说吧,c消失之前将值返回给了k,所以肯定是能得到5的
第二个程序首先char *str应该 = “”;而不是NULL
其次,你上下两个函数打错了,一个是RetMenory,一个是RetMemory
最后你调用的那个程序返回的是一个地址在输出之前返回的那个局部变量的地址就已经销毁了,所以你函数的返回值就不应该是char*