C语言的结构体类型是什么数据?数据有哪些类型?

如题所述

结构体类型就是以struct关键字定义的数据类型

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。是一种聚合类型,里面可以包含多种数据类型,甚至可以结构体里嵌套结构体。相信我,等你深入理解了C言语之后,结构体在C语言里是一个神器。

C语言有五种基本数据类型:字符(char)、整型(int)、单精度实型(float)、双精度实型(double)和空类型(void)。

C语言还提供了几种聚合类型(aggregate types),包括数组、指针、结构体(struct)、共用体(联合)、位域和枚举

结构体(Structure)是一个或多个相同数据类型或不同数据类型的变量集合在一个名称下的用户自定义数据类型。struct 结构体名,成员列表。

因为有typedef关键字,PER实际上也就是结构体类型名,用PER可以直接定义变量。结构体定义的格式是struct 结构体名。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-05
结构体是C语言给出的一种聚合类型
其中可以包含任何已定义的数据类型(包括自己定义的类型,甚至包括结构体),也可以包含函数
例如如下的结构体
typedef struct
{
int a[7][9];

bool empty(){return (a[1][1]==0&&a[2][1]==0&&a[3][1]==0&&a[4][1]==0&&a[5][1]==0);}

void output()
{
int i,j;
for (i=7;i>0;i--,cout<<endl)
for (j=1;j<=5;cout<<a[j][i]<<' ',j++);
cout<<endl;
}

void down(int x,int y)
{
int i=y-1;
while (i>0&&a[x][i]==0) i--;
i++;
if (i<y)
{
a[x][i]=a[x][y];a[x][y]=0;
for (int j=1;a[x][y+j]>0;j++)//above a[i][j]
{
a[x][i+j]=a[x][y+j];a[x][y+j]=0;
}
}
}
void down_0(int x,int y)
{
int i=y-1;
while (i>0&&a[x][i]==0) i--;
i++;
if (i<y) {a[x][i]=a[x][y];a[x][y]=0;}
}

void check()
{
int i,j,k;
bool v[7][9];

do
{
memset(v,0,sizeof(v));
//output();

for (i=1;i<=5;i++)
for (j=1;j<=5;j++)
{
if (a[i][j]>0&&a[i][j]==a[i][j+1]&&a[i][j]==a[i][j+2])
{
v[i][j]=v[i][j+1]=v[i][j+2]=1;
//k=j+2;
//while (k<=7&&a[i][k]==a[i][j]) k++,v[i][k]=1;
//j=k-2;
}
}
for (i=1;i<=7;i++)
for (j=1;j<=3;j++)
{
if (a[j][i]>0&&a[j][i]==a[j+1][i]&&a[j][i]==a[j+2][i])
{
v[j][i]=v[j+1][i]=v[j+2][i]=1;
//k=j+2;
//while (k<=5&&a[k][i]==a[j][i]) k++,v[k][i]=1;
//j=k-2;
}
}
k=0;
for (i=1;i<=5;i++)
for (j=1;j<=7;j++)
{
if (v[i][j]==1) a[i][j]=0,k=1;
else down_0(i,j);
}
//for (i=1;i<=5;i++)
// for (j=1;j<=7;j++)
// if (v[i][j]==0) down_0(i,j);

//output();
}while(k==1);
}

void change_left(int x,int y)
{
int t;
t=a[x][y];a[x][y]=a[x-1][y];a[x-1][y]=t;
if (a[x][y]>0) down(x,y);
if (a[x][y+1]>0) down(x,y+1);
if (a[x-1][y]>0) down(x-1,y);
check();
}
void change_right(int x,int y)
{
int t;
t=a[x][y];a[x][y]=a[x+1][y];a[x+1][y]=t;
if (a[x][y]>0) down(x,y);
if (a[x][y+1]>0) down(x,y+1);
if (a[x+1][y]>0) down(x+1,y);
check();
}
}map;
假如有 map m;
可以调用其中变量如 m.a[i][j];
可以使用其中函数如 m.check();
不难看出,结构体可以给我们带来很大的便利
当对C了解深入以后就会发现越来越喜欢它了~
相似回答