在以下示例中,函數func()
返回本地指針變量的地址爲main()
函數。它在GCC中工作正常。因此,它是明確的行爲?將本地指針變量的地址返回給main()函數
#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()函數內部打印指針的地址。參見http://ide.geeksforgeeks.org/sULNzy – rsp
您打印的內容不是指針**的**地址,而是* *指針**的值。指針**的**地址將在'func'中爲'&p'。 'main'中的'&ptr'。當然,指針**的**值**是一個地址**(但是指針指向的對象的地址)。 –