C/C++ struct和typedef struct的区别

在C中:

Student为标识符类似于变量名、函数名;struct Student为结构体类型;Stu1为结构体变量

#include <stdio.h>
#include <stdlib.h>

struct Student		
{
	int a;                  //Student为标识符类似于变量名、函数名;struct Student为结构体类型
	int b;                  //Stu1为结构体变量
}Stu1;						
						   

typedef struct Teacher		
{
	int age;                //struct Teacher,Tea都为结构体类型,struct为结构体关键字
	int height;             //Tea==struct Teacher;为结构体类型
}Tea;						
							

int main()
{
	struct Student s1;		//若无typedef,必须用struct来声明
	s1.a = 5;
	Stu1.b = 15;
	printf("%d\n", s1.a);
	printf("%d\n", Stu1.b);


	Tea t1;					//若有typedef,可以用以此来声明;
	t1.age = 10;
	
	printf("%d\n", t1.age);

	
	system("pause");
	return 0;
}

在C++中:

C++中对struct进行了加强,Student为结构体类型(类似以int 、char);Stu为结构体变量;  可直接声明Student s1;此时s1和Stu都是结构体变量。

使用typedef后,t1、t2都为结构体变量;这就是C++对struct的加强。

#include "iostream"

using namespace std;

struct  Student
{
	int a;
}Stu;


typedef struct Teacher
{
	int age;
	int height;
}Tea;

int main()
{
	Student s1;				//s1为结构体变量,Student为结构体类型
	s1.a = 10;
	Stu.a = 20;				//Stu也是结构体变量。

	cout <<"s1:" <<s1.a << endl;
	cout <<"Stu:" <<Stu.a << endl;
//------------------------------------------------------------------------

	struct Teacher t1;				
	t1.age = 5;
	cout <<"t1:" <<t1.age << endl;

	Teacher t2;					//加不加struct都可以声明结构体变量
	t2.age = 10;
	cout <<"t2:"<< t2.age << endl;

	Tea t3;					//Tea此时为结构体类型,t3为结构体变量
	t3.height = 15;				
	cout <<"t3:" <<t3.height << endl;

	system("pause");	
	return 0;
}	

总结:

typedef struct Teacher
{
	int age;
	int height;
}Tea;

在C中声明结构体变量的方法有:

(1)struct Teacher t1;

(2)Tea t2;

在C++中声明结构体变量的方法有:

(1)struct Teacher t1;

(2)Teacher t2;

(3)Tea t3;

发布了36 篇原创文章 · 获赞 6 · 访问量 2032

猜你喜欢

转载自blog.csdn.net/the_sea1/article/details/102731157