C语言函数返回指针问题

C语言函数返回指针问题

今天写代码时想用一个函数返回一个结构体指针,结果出错了,然后做一个总结。

下面是出错的示例:

int *fun( )
{
	int a ;
	return &a; // 返回局部变量的地直,返回后这个变量已不存在了
}

局部变量是保存在栈中的,随着函数的结束,局部变量也被释放,当函数执行完毕后,指针指向的地址是存在的,但它指向的数据已经不在了。

总结

  1. 子函数想要返回指针,指针必须指向一个确定的地址,一般有两种
    1)静态变量(全局静态或局部静态),这种变量不会随着子函数的结束而被释放,因为它存在静态存储区
    2)动态申请的内存,动态申请的内存必须手动释放,也不会随着子函数的结束而被释放。
  2. 可以采用把指针以形参的方式传递给子函数,以此来获取子函数的执行结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值