
正文
C语言函数返回指针方法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1、将函数内部定义的变量用static修饰
由于static修饰的变量,分配在静态内存区(类似于全局变量区),函数返回时,并不会释放内存,因此可以将要返回的变量加static修饰。
int *test_func()
{
static int local_data; //加static修饰
local_data = ; printf("Function local_data : %d\n", local_data); return &local_data;
} int main()
{
int *main_data = NULL; main_data = test_func(); printf("Return data: %d\n", *main_data); return ;
}
2、使用分配在堆上的内存
分配在堆上的内存主要指通过malloc、calloc、realloc等函数动态分配的内存,由于堆上的内存需要手动释放,因此可以在使用完以后再释放,这样指针就不会指向未知。
注意:堆上的内存必须要用完即释放,否则容易造成内存泄漏。
int *local_data_test()
{
int *plocal_data; plocal_data = (int *)malloc(sizeof(int));
*plocal_data = ; printf("Function plocal_data value: %d\n", *plocal_data); return plocal_data;
} int main()
{
int *main_data = NULL; main_data = local_data_test(); printf("Return data: %d\n", *main_data);
free(main_data);
main_data = NULL; return ;
}
另外一般要返回指针的情况,也可以用全局变量或者传入指针参数代替。







