2016-09-29 97 views
0

好的,所以这实际上并不是我正在处理的代码。这是一个简单的代码提取,它会产生完全相同的错误。因此,我想如果我能够了解为什么我的简化代码出现错误,那么我可以将它应用到我的实际代码中。感谢您提前提供任何帮助/建议!初始化结构变量时出错

所有的
#include <stdio.h> 
int main() 
{ 
    struct fruit 
    { 
     int apples; 
     int oranges; 
     int strawberries; 
    }; 

    int x; 
    int y; 
    int z; 

    x = 1; 
    y = 2; 
    z = 3; 

    struct fruit apples = x; 
    struct fruit oranges = y; 
    struct fruit strawberries = 4; 

    printf("The value is %d or %d", fruit.apples,fruit.strawberries); 

    return 0; 
} 
+1

有*这么*许多错误在这里:这似乎是最好的行动方针是给你的d一本好书。 K&R是无与伦比的恕我直言。 – Bathsheba

+0

'struct fruit fruit = {x,y,4};' – BLUEPIXY

+0

我实际上使用了“The C Programming Language”一书中的lolol。他们也用int值初始化了一个结构体。 – rickylance

回答

1

首先,你不能初始化与int值的struct类型变量反正,必须使用一个大括号内的初始值设定,或明确地初始化每个部件。

这就是说,

struct fruit applies 
struct fruit oranges 
struct fruit strawberries 

不在于你如何定义struct fruit类型的变量,并访问成员。正确的方法是

struct fruit f; 
f.apples = x; 
f.oranges = y; 
f.strawberries= 4; 

,或者更精确的方式,

struct fruit f = {x,y,4}; 

,或者甚至削减了中间变量,

struct fruit f = {1,2,4};  
+0

@rickylance请出示密码。 –

+0

我收到一个错误,说“存储大小f不知道” – rickylance

+0

@rickylance [好,适用于我](https://ideone.com/EeYbNm) –

1

正确的语法要做到这一点:

struct fruit f; 
f.apples = 1; 
f.oranges = 2; 
f.strawberries = 3; 

或使用二RECT初始化:

struct fruit f = {1, 2, 3}; 

或C99向上,用指定的初始化:

struct fruit f = { 
    .apples = 1, 
    .oranges = 2, 
    .strawberries = 3, 
}; 
+0

___注意:成员变量名称仅用于说明,不要假设仅使用首字母会生效。 –

1

使用本:

struct fruit fruit; 

fruit.apples = {x}; 
fruit.oranges = {y}; 
fruit.strawberries = {4}; 

struct fruit fruit = {x, y, 4};