1. 函数中的局部变量地址是无法返回的,返回会报出警告
为何会有这种情况? 我一开始不知道是怎么回事, 然后我就在网上搜索了一下, 发现了一个合理的解释:
因为想要返回局部变量的地址就必须用一个指向该类型的指针来指向它,例如:
char * segment (char a) {
retrun &a;
}
该例子中char a 姑且认为是一个局部变量, 返回一个字符的地址, 通过一个指向该地址的指针, 但是问题是该指针在返回的时候, 由于该形式参数会和函数中的非静态局部变量一起释放掉, 就导致了那个指向char的指针指向的东西消失掉了, 于是就给我了一个Segmentation Fault的错误, 这个指针就指向一个无意义的地方, 结果就变得不可预知了
2.如果函数返回的是函数中的局部变量而非该变量的地址, 那么可以返回, 没有错误
PS:第一次写博客,以后坚持记录所学所得
本文探讨了为什么不能直接返回函数中局部变量的地址,并解释了返回局部变量地址时出现Segmentation Fault的原因。同时,文中也提到了如果返回局部变量本身则不会出现问题。
3359





