C语言指针返回问题

Python018

C语言指针返回问题,第1张

1.返回函数里面局部变量的地址,而函数结束后,该地址就释放掉了,所以在函数外访问、修改该地址都是非法的,结果不可知

2.指针为野指针,然后向野指针赋值(*ptr=10),非法访问,结果不可知,容易崩溃,切函数返回的也是野指针

3.函数内申请动态内存空间,函数结束,该内存空间不会释放,函数返回该内存空间地址,外部可以使用,但外部需要手动释放该空间(free(动态内存空间地址))

由于你在子函数int *shuzu(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include <stdio.h>下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,百度一下就会了~~~

1、C语言属于高级编程语言。在C语言中一个函数不能返回局部地址即指针。

2、例如:

int

*

func(void)

int

a=

10;

int

*p

=

&a

return

p

a变量的区域是func()函数,在函数内有效,出了函数就释放了,此时p指向的是一个未知

地址,属于错误用法。

正确用法

int

*p

=

NULL;

int

*

func(void)

p

=

malloc(sizeof(int))

if(p!=NULL)

{

*p

=

10

}

return

p