c++温故之结构体写法

结构体简介

结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,我就可以更好抽象描述一个类别,个人感觉类就是由结构体发展而来的。在C/C++中,结构体声明的关键字为struct。

C语言结构体语法

第一种语法表示

struct 结构体名称{

数据类型 member1;

数据类型 member2;

};

这种方式在声明结构体变量时为:struct 结构体名称 结构体变量名

example :

#include<stdio.h>
struct Student{
int sNo;
char name[10];
};
int main(){
struct Student stu;
scanf("%d",&stu.sNo);
scanf("%s",stu.name);
printf("%d\n",stu.sNo);
}


第二种语法表示

typedef struct 结构体名称{

数据类型 member1;

数据类型 member2;

}结构体名称别名;

这种方式在声明结构体变量时有两种方式。

第一种:struct 结构体名称 构体变量名

第二种:结构体名称别名 结构体变量名

原因:这里使用了typedef关键字,此关键字的作用就是声明数据类型的别名,方便用户编程,所以这里用了之后,结构体名称别名就相当于struct 结构体名称。在声明结构体变量时,就无需写struct了。

example:

#include<stdio.h>
typedef struct Student{
int sNo;
char name[10];
}Stu;
int main(){
struct Student stu; //方式一
Stu stu1; //方式二
scanf("%d",&stu.sNo);
scanf("%s",stu.name);
printf("%d\n",stu.sNo);
scanf("%d",&stu1.sNo);
scanf("%s",stu1.name);
printf("%d\n",stu1.sNo);
}


第三种方式

struct 结构体名称{

数据类型 member1;

数据类型 member2;

}结构体变量名;

相当于:

struct 结构体名称{

数据类型 member1;

数据类型 member2;

};

struct 结构体名称 结构体变量名;

这种方式既定义了结构体名称,同时声明了一个结构体变量名。在其它地方也可以通过struct 结构体来再次声明其它变量,而第四种方法则不可以。

example:

#include<stdio.h>
struct Student{
int sNo;
char name[10];
}stu; //此处stu 是变量名
int main(){
scanf("%d",&stu.sNo);
scanf("%s",stu.name);
printf("%d\n",stu.sNo);
}


第四种方式

struct {

数据类型 member1;

数据类型 member2;

}结构体变量名;

此方式是匿名结构体,在定义时同时声明2个结构体变量,但不能在其它地方声明,因为我们无法得知该结构体的标识符,所以就无法通过标识符来声明变量。

example:

#include<stdio.h>
struct {
int sNo;
char name[10];
}stu,stu1; //匿名结构体,同时定义了2个结构体变量
int main(){
scanf("%d",&stu.sNo);
scanf("%s",stu.name);
printf("%d\n",stu.sNo);
scanf("%d",&stu1.sNo);
scanf("%s",stu1.name);
printf("%d\n",stu1.sNo);
}


C++语言结构体语法

C++语言结构体语法的C大同小异,声明结构体变量时可以省略struct 其它无变化!

最后,别名问题



typedef struct queue
{
    datatype data;
    struct queue *pNext;
}Queue, *pQueue;

Queue *enq()  
pQueue enq()

原文链接: https://www.cnblogs.com/xietianjiao/p/15762249.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/183280

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午10:22
下一篇 2023年2月12日 上午10:22

相关推荐