嵌入式C开发基础题(8)

8:考查函数指针

int* f1(void)
{
	int x =10;
	return (&x);
}

int* f2(void)
{
	int* ptr;
	*ptr=10;
	return ptr;
}

int* f3(void)
{
	int* ptr;
	ptr=(int*)malloc(sizeof(int));
	return ptr;
}


上面这3个函数哪一个最可能引起指针方面的问题

(a)只有f3     (b)只有f1and f3    (c) 只有f1 and f2    (d) f1 , f2 ,f3


解答:

f1显然有问题,它返回一个局部变量的指针,局部变量是保存在stack中的,退出函数后,局部变量就销毁了,保留其指针没有意义,因为其指向的stack空间可能被其他变量覆盖了

f2也有问题,ptr是局部变量,未初始化,它的值是未知的,*ptr不知道指向哪里了,直接给*ptr赋值可能会覆盖重要的系统变量,这就是通常说的野指针的一种



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值