函数返回局部变量

发布时间 2023-12-20 11:55:37作者: 踏浪而来的人

局部变量在函数执行的时候才分配,函数返回后,这个函数所用的局部地址又被系统回收(即返回的局部指针指向的地址是无效的)

bss段(未初始化)、data段(已初始化)、常量区在代码加载的时候就分配了。

 

  函数可以返回局部变量的值;

  函数可以返回一个局部指针,但是这个局部指针有限制条件(即在内存中还存在,没有被释放):

    1. 用这个指针要static修饰

    2. 这个指针要指向堆区

    3. 这个指针要指向常量区

  

为什么不能返回一个局部指针变量?

  函数的返回本质是值的赋值,如max = getmax(int a, int b);就是将最大的那个值赋值给max,这是最大的值就记录在max中了,

  返回局部指针变量也是将该指针所指向的地址赋值给主调函数中的指针变量,但是局部指针变量所指向的地址在函数结束后就已经释放,所以即使主调函数拿到了这个指针,也不能操作该指针,因为这个指针没有所指向的地址了