C++基础---typedef struct与struct的区别
来源:互联网 发布:linux killproc 编辑:程序博客网 时间:2024/05/17 06:15
1.typedef struct与struct的区别
1.1 typedef的概念
- typedef:为C语言的关键字,作用是为一种数据类型定义一个新名字(这里的数据类型包括基础数据类型和复合数据类型)。
- 在编程中使用typedef的目的:一是给变量一个易记且意义明确的新名字,二是简化一些比较复杂的类型声明。
1.2 typedef struct的代码示例
示例代码一:
#include <iostream>#include <string>using namespace std;typedef struct Student{ string name; string gradenum; string classnum; int number;}*student;//定义了一个指向Student结构体别名student的指针,代表所有指向这个结构的指针,使用前必须为其创建空间。int main(){ //student s1;//错误,编译通过,运行时出错,由于对象指针未被初始化即没有创建空间。 student s1 = new Student;//正确,为对象指针分配创建内存空间,编译通过,运行通过。 s1->name = "Mini"; s1->gradenum = "一年级"; s1->classnum = "一班"; s1->number = 1; cout<<"姓名:"<<s1->name<<"\t"<<"年级:"<<s1->gradenum<<"\t" "班级:"<<s1->classnum<<"\t"<<"学号:"<<s1->number<<endl; delete s1;//在堆中创建的空间,必须要释放掉。 s1 = 0;//将指向释放后空间的指针置为空指针。 system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码二:
#include <iostream>#include <string>using namespace std;typedef struct Student{ string name; string gradenum; string classnum; int number;}&student;//定义了一个Student结构体别名student的别名,别名必须得到初始化。int main(){ //student s1;//错误,编译不通过,error C2530: “s1”: 必须初始化引用。 Student s;//构造结构体Student的对象,用于初始化别名对象引用。 student s1 = s;//正确,初始化对象引用,编译通过,运行通过。 s1.name = "Mini"; s1.gradenum = "一年级"; s1.classnum = "一班"; s1.number = 1; cout<<"姓名:"<<s1.name<<"\t"<<"年级:"<<s1.gradenum<<"\t" "班级:"<<s1.classnum<<"\t"<<"学号:"<<s1.number<<endl; system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码三:
#include <iostream>#include <string>using namespace std;typedef struct Student{ string name; string gradenum; string classnum; int number;}student;//定义了一个Student结构体别名student。int main(){ student s1;//正确,编译通过,运行通过。 s1.name = "Mini"; s1.gradenum = "一年级"; s1.classnum = "一班"; s1.number = 1; cout<<"姓名:"<<s1.name<<"\t"<<"年级:"<<s1.gradenum<<"\t" "班级:"<<s1.classnum<<"\t"<<"学号:"<<s1.number<<endl; system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码四:
#include <iostream>#include <string>using namespace std;typedef struct Student{ string name; string gradenum; string classnum; int number; Student *next;}*student;int main(){ Student s1, s2, s3, *p; s1.name = "Mini1"; s1.gradenum = "一年级"; s1.classnum = "一班"; s1.number = 1; s2.name = "Mini2"; s2.gradenum = "二年级"; s2.classnum = "二班"; s2.number = 2; s3.name = "Mini3"; s3.gradenum = "三年级"; s3.classnum = "三班"; s3.number = 3; student head = new Student; head = &s1;//将s1变量结构的开始地址作为一个结点赋给头指针head s1.next = &s2;//将s2变量结构的开始地址作为一个结点赋给x变量结构的next指针成员 s2.next = &s3;//将s3变量结构的开始地址作为一个结点赋给y变量结构的next指针成员 s3.next = NULL;//将s3变量结构的next指针成员赋为空,即表示该结点是个尾结点 p = head;//将p指针指向头结点head while(p) { cout<<"姓名:"<<p->name<<"\t"<<"年级:"<<p->gradenum<<"\t" "班级:"<<p->classnum<<"\t"<<"学号:"<<p->number<<endl; p = p->next; } system("pause"); return 0;}=>姓名:Mini1 年级:一年级 班级:一班 学号:1 姓名:Mini2 年级:二年级 班级:二班 学号:2 姓名:Mini3 年级:三年级 班级:三班 学号:3
1.3 struct的代码示例
示例代码一:
#include <iostream>#include <string>using namespace std;struct Student{ string name; string gradenum; string classnum; int number;}*student;//定义了一个指向Student结构体的对象指针student,使用前必须为其创建空间。int main(){ student = new Student; student->name = "Mini"; student->gradenum = "一年级"; student->classnum = "一班"; student->number = 1; cout<<"姓名:"<<student->name<<"\t"<<"年级:"<<student->gradenum<<"\t" "班级:"<<student->classnum<<"\t"<<"学号:"<<student->number<<endl; delete student;//在堆中创建的空间,必须要释放掉。 student = 0;//将指向释放后空间的指针置为空指针。 system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码二:
#include <iostream>#include <string>using namespace std;struct Student{ string name; string gradenum; string classnum; int number;};int main(){ Student s;//构造结构体Student的对象,用于初始化别名对象引用。 Student &student = s;//正确,//定义了一个Student结构体的别名student,别名必须得到初始化。 student.name = "Mini"; student.gradenum = "一年级"; student.classnum = "一班"; student.number = 1; cout<<"姓名:"<<student.name<<"\t"<<"年级:"<<student.gradenum<<"\t" "班级:"<<student.classnum<<"\t"<<"学号:"<<student.number<<endl; system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码三:
#include <iostream>#include <string>using namespace std;struct Student{ string name; string gradenum; string classnum; int number;}student;//定义了一个Student结构体别名student。int main(){ student.name = "Mini"; student.gradenum = "一年级"; student.classnum = "一班"; student.number = 1; cout<<"姓名:"<<student.name<<"\t"<<"年级:"<<student.gradenum<<"\t" "班级:"<<student.classnum<<"\t"<<"学号:"<<student.number<<endl; system("pause"); return 0;}=>姓名:Mini 年级:一年级 班级:一班 学号:1
示例代码四:
#include <iostream>#include <string>using namespace std;struct Student{ string name; string gradenum; string classnum; int number; Student *next;}*head;int main(){ Student s1, s2, s3, *p; s1.name = "Mini1"; s1.gradenum = "一年级"; s1.classnum = "一班"; s1.number = 1; s2.name = "Mini2"; s2.gradenum = "二年级"; s2.classnum = "二班"; s2.number = 2; s3.name = "Mini3"; s3.gradenum = "三年级"; s3.classnum = "三班"; s3.number = 3; head = new Student; head = &s1;//将s1变量结构的开始地址作为一个结点赋给头指针head s1.next = &s2;//将s2变量结构的开始地址作为一个结点赋给x变量结构的next指针成员 s2.next = &s3;//将s3变量结构的开始地址作为一个结点赋给y变量结构的next指针成员 s3.next = NULL;//将s3变量结构的next指针成员赋为空,即表示该结点是个尾结点 p = head;//将p指针指向头结点head while(p) { cout<<"姓名:"<<p->name<<"\t"<<"年级:"<<p->gradenum<<"\t" "班级:"<<p->classnum<<"\t"<<"学号:"<<p->number<<endl; p = p->next; } system("pause"); return 0;}=>姓名:Mini1 年级:一年级 班级:一班 学号:1 姓名:Mini2 年级:二年级 班级:二班 学号:2 姓名:Mini3 年级:三年级 班级:三班 学号:3
参考文献:
[1] 百度搜索关键字:typedef struct与struct的区别
0 0
- C++基础---typedef struct与struct的区别
- typedef struct与struct的区别(C语言中的)
- C语言中typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct 与 struct的区别例子
- typedef struct与struct的区别
- struct与typedef struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct 与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- 百度编辑器上传大容量视频报HTTP错误
- [[UIBarButtonItem alloc] initWithTitle与[[UIBarButtonItem alloc] initWithBarButtonSystemItem的区别
- Android Api Demos登顶之路(九十五)Media-->AudioFx
- IO 复用
- 编码解码模型实现中的其他一些考虑
- C++基础---typedef struct与struct的区别
- 布局自动化处理方法
- 温故知新: JavaScript
- View相关知识学习(一)
- 设计模式--工厂方法模式
- RecyclerView的通用适配器,和滚动时不加载图片的封装
- 大多数人并不知道的秘密:接地气,寿命长!
- ocp-311
- ocp-312