【发布时间】:2018-01-01 16:23:05
【问题描述】:
在以下示例中,函数 func() 将 本地指针变量的地址返回给 main() 函数。它在 GCC 中运行良好。
那么,这是明确定义的行为吗?
#include <stdio.h>
#include <stdlib.h>
int *func(void);
int *func(void)
{
int *p;
p = malloc(sizeof *p);
*p = 10;
return p;
}
int main()
{
int *ptr = func();
printf("%d\n",*ptr);
return 0;
}
【问题讨论】:
-
是的。是什么让你认为不是?它不返回“指针变量的地址”,而是“指针变量的值”(当然,它是一个地址)。
-
@FelixPalmen 在 func() 和 main() 函数中打印相同的指针地址。见ide.geeksforgeeks.org/sULNzy
-
你打印的不是指针的地址,而是指针的值。 指针的地址将是
&pinfuncresp。&ptr在main。当然,指针的值是一个地址(但是指针指向的对象的地址)。
标签: c function pointers malloc