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

 我来答
大大的Wiener
推荐于2019-10-14 · TA获得超过6.4万个赞
知道大有可为答主
回答量:392
采纳率:90%
帮助的人:32.8万
展开全部

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

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

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

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

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

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

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友eb3b38b
2018-01-05 · 超过15用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:33.3万
展开全部
结构体是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了解深入以后就会发现越来越喜欢它了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式