2012-09-03 37 views
4
#include <stdio.h> 
#include <string.h> 

struct s 
{ 
    int data; 
} fun() 
{ 
    static struct s ss; 
    ss.data = 20; 
    return ss; 
} 

int main() 
{ 
    struct s ss; 
    memcpy(&ss, &(fun()), sizeof(struct s)); 

    printf("\n Data: :%d", ss.data); 

    return 0; 
} 

在上面的程序中,我试图定义一个返回类型被提及的结构。 struct s已成功定义。在函数的返回类型中定义结构

这是一个有效的用法吗?我从未见过这样的真实场景。

如何使该程序工作?

我得到这个编译器错误:从您memcpy线分开

asd.c: In function ‘main’: 
asd.c:21:15: error: lvalue required as unary ‘&’ operand 

回答

7

一切都是正确的(虽然有点难以阅读),以及编译器错误告诉你什么是错的:你可以不拿“临时”的地址(即函数调用的结果,例如­ pres ­ sion)。

你可以和应该不过只写了更自然的方式:

struct s ss = fun(); 
+0

优秀......工作正常。 :) – Jeyaram

+0

'错误:新类型可能没有在返回类型中定义' - gcc 4.6.1 –

+0

对不起。我用g ++编译。对不起所有的都是好的 –

相关问题