C和Cpp在结构体上的区别(不包括面向对象的区别)

没有用typedef时候

C语言

#include <stdio.h>

struct Books {
	int sal;
	int id;
};

int main() {
	struct Books book; // 声明一个叫做book的结构体
	book.sal = 10;
	book.id = 10010;
	printf("%d %d", book.sal, book.id);
	return 0;
}

C++

#include <iostream>

using namespace std;

struct Books {
	int sal;
	int id;
};

int main() {
	Books book;
	book.sal = 10;
	book.id = 10010;
	cout << book.sal << ' ' << book.id << endl;
	return 0;
}

有用typedef时候

C语言

#include <stdio.h>

typedef struct {
	int sal;
	int id;
}books;

int main() {
	books book;
	book.sal = 10;
	book.id = 10010;
	printf("%d %d", book.sal, book.id);
	return 0;
}

C++

#include <iostream>

using namespace std;

typedef struct {
	int sal;
	int id;
}Books;

int main() {
	Books book;
	book.sal = 10;
	book.id = 10010;
	cout << book.sal << ' ' << book.id << endl;
	return 0;
}

小结

  1. C结构体在定义时除非使用typedef,否则之后定义变量都必须跟上struct + 结构体名,而C++结构体可以直接使用结构体名,不受限制。
  2. C结构体不能在结构体中初始化成员变量,而C++结构体可以。
  3. C结构体的空结构体sizeof为0,C++的sizeof为1。

如有错误以及可以改进的地方欢迎在下方评论区留言!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值