即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

C语言里相关函数的局部变量与地址返回

编程语言 github_38996275 18℃ 0评论

    1. 函数中的局部变量地址是无法返回的,返回会报出警告


    为何会有这种情况? 我一开始不知道是怎么回事, 然后我就在网上搜索了一下, 发现了一个合理的解释:

    因为想要返回局部变量的地址就必须用一个指向该类型的指针来指向它,例如:

char * segment (char a) {
    retrun &a;
}

该例子中char a 姑且认为是一个局部变量, 返回一个字符的地址,  通过一个指向该地址的指针, 但是问题是该指针在返回的时候, 由于该形式参数会和函数中的非静态局部变量一起释放掉, 就导致了那个指向char的指针指向的东西消失掉了, 于是就给我了一个Segmentation Fault的错误, 这个指针就指向一个无意义的地方, 结果就变得不可预知了


    2.如果函数返回的是函数中的局部变量而非该变量的地址, 那么可以返回, 没有错误


PS:第一次写博客,以后坚持记录所学所得

转载请注明:CodingBlog » C语言里相关函数的局部变量与地址返回

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情