【资料图】

1、这句提示的意思是,局部变量a使用时未被初始化。

2、C语言将局部变量放在栈中,即在函数入口处添加一句指令subl $xx, %esp来上移栈顶指针,为局部变量流出空间。

3、而系统管理栈,只有push压入、pop弹出两种基本操作,pop弹出之后不会将那块区域的内容清零,所以说局部变量的值是不确定的,因为栈中那块地方之前可能经历过几次压入而被改写。

4、解决办法,就是在使用前,给a一个确定的值,让他指向一块确定的可访问的内存区域。

5、可以使用malloc来分配一块堆内存给a:a=malloc(sizeof(int)*7);这样写的话,需要在a使用完毕后,调用free函数回收这块堆内存。

本文就为大家分享到这里,希望小伙伴们会喜欢。

推荐内容