怎么用函数返回变量的地址
我们先分别讨论一下,返回局部变量地址 和 返回全局变量地址
返回局部变量地址
#include <stdio.h>
//这是错误的示范,不能返回局部变量的地址
int *fun()
{
int a;
return &a;
}
int main(int argc, char const *argv[])
{
int *p = NULL;
p = fun();//接收函数返回的地址
//fun()函数执行完毕,fun()内部的a,自动释放
*p = 100;//操作指针所指向的内存
//那么这里就相当于操作野指针
return 0;
}
返回全局变量地址
#include <stdio.h>
//1、在{}外面定义的变量,就是全局变量,全局变量任何地方都能使用
//2、全局变量只有在整个程序结束后,才释放
int a;
int *fun()
{
return &a;//fun()调用完毕,a不释放
}
int main(int argc, char const *argv[])
{
int *p = NULL;
p = fun();
*p = 100;
printf("*p = %d\n", *p);
printf("a = %d\n", a);
*( fun() ) = 111;
printf("a = %d\n", a);
return 0;
}