读书人

C 构造类型

发布时间: 2013-03-21 10:08:17 作者: rapoo

C 结构类型?


#include <stdio.h>

struct{
int x;
char y;
}kk;

int main()
{
struct kk a={1,'Q'};
printf("%d\n",a.x);
}


a.c: In function ‘main’:
a.c:10: error: variable ‘a’ has initializer but incomplete type
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: error: storage size of ‘a’ isn’t known

为什么出错?
[解决办法]

//方法1
#include <stdio.h>

struct{
int x;
char y;
}a={1,'Q'}; // 定义a是匿名/无名的struct类型变量,注意这个匿名,表示此struct类型是没有名字的

int main()
{
printf("%d\n",a.x);
}


//方法2
#include <stdio.h>

struct TT{
int x;
char y;
}; //定义struct类型,名字为TT

int main()
{
struct TT a={1,'Q'}; // 定义struct TT类型的变量a
printf("%d\n",a.x);
}


//方法3

#include <stdio.h>

struct TT{
int x;
char y;
}a={1,'Q'};; // 定义struct TT类型同时定义此类型的变量a

int main()
{
printf("%d\n",a.x);
}


//方法4
#include <stdio.h>

typedef struct {
int x;
char y;
}kk; // 先定义一个匿名的struct类型,然后通过typedef给这个匿名类型定义另外一个名字kk

int main()
{
kk a={1,'Q'};
printf("%d\n",a.x);
}

读书人网 >C语言

热点推荐