我想在函数k
中返回变量func()
的地址。以下是2个功能。
main()功能
#include <stdio.h>
main()
{
int* j;
int* func();
j= func();
printf("\n%d",*j);
}
func()功能
int* func()
{
static int k=30;
return (&k);
}
我希望int *func()
返回k
的地址,但会显示以下错误。
function returns address of local variable [-Wreturn-local-addr]
return (&k);
答案 0 :(得分:3)
k
是一个局部变量,仅存在于函数func
内
所以你要返回k
不存在的地址
它是undefined behavior
。
您可以为k
分配动态内存:
int *k = (int*)malloc(sizeof(int));
*k = 30
return k;
不要忘记释放main
free(j);
答案 1 :(得分:2)
这不是错误,而是一个警告。你仍然不应该这样做,因为只要局部变量超出范围(如返回的情况),它就会在逻辑上抓住存在,不应该以不可预测的行为为代价使用。
答案 2 :(得分:0)
试
int* func()
{
static int k=30;
return &k;
}