关于C和C++中结构体定义及初始化区别的讨论

 C语言中最原始的结构体定义及声明的例子如下

//定义
struct users{
    char name[10];
    int age;
};
//声明一个变量
struct users Kelly;
//先定义后声明

其实在定义时也可以连带声明几个变量

//定义加声明
struct users{
    char name[10];
    int age;
}Kelly,Korloa; 声明了两个变量

当然如果你只需要几个结构体变量的话(后续不会用到),那么结构体名干脆不写了:

//定义加声明
struct{
    char name[10];
    int age;
}Kelly,Korloa; 声明了两个变量

这样做的缺点就是你以后再也无法声明这个结构体变量。

回到第一个代码块,发现每一次声明一个变量都在结构体类型名前加个struct,很麻烦,对此,C语言为你提供了typedef来优化,具体而言:

//定义
typedef struct users{
    char name[10];
    int age;
}Users;
//声明
Users Korloa,John;

我们都知道typedef起到替换的作用,这里就当于把struct users 替换为Users,因此可以用Users直接声明结构体变量

当然既然以后都用Users声明了,user这个类型名也没用了,可以不写,如下:

//定义
typedef struct{
    char name[10];
    int age;
}Users;
//声明
Users Korloa,John;

以上讨论的是C语言的结构体,下面开始讨论C++

与C语言不同,C++可以直接用类型名声明变量,如下图所示:

//定义
struct Users{
    char name[200];
    int age;
};
//声明
Users John;

是不是方便很多,以上C语言的特性C++都有,只是在这里多了一个C++的特性。


下面来讲一下初始化

C/C++通用

Approach 1

//定义
struct users{
    char name[10];
    int age;
};
//声明一个变量
struct users Kelly;
//先定义后声明
//初始化
Kelly.name="Kelly Sarah";
Kelly.age=18;

Approach 2

//定义
struct users{
    char name[10];
    int age;
};
//声明一个变量
struct users Kelly;
//先定义后声明
//初始化
Kelly={"Kelly Sarah",18};

C++还可以用构造函数

#include<iostream>
//定义
struct Users{
	int age;
	char* name;
    //构造
	Users(int t_age,char* str){
		age=t_age;
		name=str;
	}	
};
int main(){
//声明
	Users a(18,"sas");
	printf("%d%s",a.age,a.name);
	return 0;
} 

但要注意的是有了构造函数,Approach 2 就不能再用了,否则会报一堆错。

 以上就是有关C/C++结构体方面的讨论。


制作不易,感谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值