函数返回一个返回字符串的结构和函数 - 不同的行为?

时间:2011-09-06 19:48:52

标签: string function structure local

我听说我们不能从函数返回指向本地(自动)数组变量的指针,因为自动变量的范围有限,一旦被调用的函数返回它们就会消失。

char *s getName()
{
char name[]="Sumit";  // Automatic variable 
retrun name; // No scope outside the function

}

但在我的脑海中出现了一个疑问:

struct info getInfo(int a,int b)
{

struct info f1; // Automatic variable memory allocated for a structure
f1.a=a; 
f1.b=b;

return f1;

}

这里我们还返回对本地分配的内存位置的引用。那么它怎么来这里完美无缺。

PLZ帮助 等待回复

1 个答案:

答案 0 :(得分:0)

因为你“实际上”正在返回2个整数(但不完全,但按照类比)。

这与

的原因相同
inline int GetZero (int i)
{
    int j = i;

    return j;
}

GetZero(0);

工程...

此外,您没有返回引用,而是返回值。

这是通过引用返回:

int& GetZero (int i)

显然这是通过指针返回的:

int* GetZero (int i)