首页 > 编程语言 >C C++结构体四种方式

C C++结构体四种方式

时间:2022-09-24 13:45:52浏览次数:58  
标签:struct sNo 数据类型 C++ stu 结构 四种 name

第一种语法表示

struct 结构体名称
{ 
   数据类型 member1; 
   数据类型 member2; 
}; 
#include<iostream>
using namespace std;
struct Student
{
    int sNo;
    char name[10];
};
int main()
{
    struct Student stu;
	//stu.name="zhangsan";//这种赋值方式是不对的
	strcpy(stu.name, "zhangsan");
	stu.sNo=18;
	cout<<stu.name<<endl;
	cout<<stu.sNo<<endl;
}

第二种语法表示

typedef struct 结构体名称
{ 
   数据类型 member1; 
   数据类型 member2; 
}结构体名称别名; 


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

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

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

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

#include<iostream>
using namespace std;
 typedef struct Student
 {
    int sNo;
    char name[10];
} stud;
int main()
{
    struct Student stu;//方式一
	stud stu1;//方式二,以结构体别名声明一个结构变量stu1,此处可以省略关键字struct
	//stu.name="zhangsan";//这种赋值方式是不对的
	strcpy(stu.name, "zhangsan");
	stu.sNo=18;
	stu1.sNo=19;
	cout<<stu.name<<endl;
	cout<<stu.sNo<<endl;
	cout<<stu1.sNo<<endl;
}

第三种方式

struct 结构体名称
{ 
   数据类型 member1; 
   数据类型 member2; 
}结构体变量
#include<iostream>
using namespace std;
 struct Student
 {
    int sNo;
    char name[10];
} stu;//这里相当于直接声明并定义了一个结构体变量stu
int main()
{
    //struct Student stu;//错误,这里就不可以再这样声明变量
	//stud stu1;///错误,
	//stu.name="zhangsan";//这种赋值方式是不对的
	strcpy(stu.name, "zhangsan");
	stu.sNo=18;	
	cout<<stu.name<<endl;
	cout<<stu.sNo<<endl;
	//cout<<stu1.sNo<<endl;
}

第四种方式

struct 
{ 
   数据类型 member1; 
   数据类型 member2; 
}结构体变量名;

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

#include<iostream>
using namespace std;
 struct 
 {
    int sNo;
    char name[10];
} stu1,stu2;//这里相当于直接声明并定义了2个结构体变量stu1,stu2
int main()
{    
	strcpy(stu1.name, "zhangsan");
	stu1.sNo=18;
	stu2.sNo=8;
	cout<<stu1.name<<endl;
	cout<<stu1.sNo<<endl;
	cout<<stu2.sNo<<endl;
}

标签:struct,sNo,数据类型,C++,stu,结构,四种,name
From: https://www.cnblogs.com/mysweetAngleBaby/p/16725497.html

相关文章

  • C C++指针面试题零碎整理
    最基础的指针如下:inta;int*p=&a;答:p指向a的地址,&是取a的地址。*指的是指针中取内容的符号。2.str[]和str*的区别:charstr1[]="abc";charstr2[]="abc";c......
  • 「浙江理工大学ACM入队200题系列」问题 L: 零基础学C/C++52——计算数列和2/1,3/2,5/3,8/
    本题是浙江理工大学ACM入队200题第五套中的L题我们先来看一下这题的题面.题面题目描述有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,……计算这个数列的前n项和。注意:C语言中......
  • c++ -- 做题思想
    二分思想:比较显然的就是求某一个确定的值,那么看看他是不是单调的,连续的.        其次就是,把问题通过二分来进行转化,之前的不好做,通过二分转化一......
  • UEC++ 多线程(一) FRunnable
    虚幻官方文档:https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/HAL/FRunnable/FRunnable“runnable”对象的接口。可运行对象是在任意线程上“运行”的对象......
  • 视频结构化 AI 推理流程
    「视频结构化」是一种AI落地的工程化实现,目的是把AI模型推理流程能够一般化。它输入视频,输出结构化数据,将结果给到业务系统去形成某些行业的解决方案。换个角度,如果你......
  • 经典重塑-yolov3的网络结构的故事
    由浅入深,由总体到局部的讲解先上个结构概览目前根据现有的知识理解,我列出以下几个关键点backbone:darknet-53,为什么是53层neck:fpn(特征金字塔),上采样+concathead:上图三......
  • 数据结构专题
    线段树一维线段树Xenny树状数组一维树状数组嗯嗯还是Xenny胡小兔区修单差·差分说一下差分。这个东西一直没搞明白,后来也没再想。对于树状数组维护区间更改、单点......
  • C++ std : : stack
    和其他序列容器相比,stack是一类存储机制简单、所提供操作较少的容器。下面是stack容器可以提供的一套完整操作:top():返回一个栈顶元素的引用,类型为T&。如果栈为空,返回......
  • C++知识整理
    2.C++编译2.1gcc编译和gdb调试的学习C程序编译成可执行文件后,才能有运行。我常用gcc工具将c程序编译成可执行文件。GCC编译流程分为四个步骤:编译预处理、编译、汇编和......
  • C++ Deque
    deque是double-endedqueue的缩写,又称双端队列容器。deque容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque容器也可......