C 语言和C++语言的 struct对比
来源:互联网 发布:参加淘宝培训班有用吗 编辑:程序博客网 时间:2024/06/05 13:21
author: stonehat
C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友元等,C++的struct和C++类唯一不同就是
struct成员默认的是public, C++默认private。而C语言struct不是类,不可以有函数,也不能使用类的特征例如public等关键字 ,也不可以有static关键字。
C++ struct里面成员初始化的形式和类是相同的,不可以直接初始化,就是不可以定义成员的时候同时初始化。C语言 struct中间的某个类型(例如int)也不可以直接初始化。
就是说下面int a = 0;在C++和C语言里面都是不能通过的。
struct HE{ int a = 0;}
//C++和C编译是不能通过的。
3. 初始化方式,C++ struct的初始化,C++不仅拥有C语言的初始化方式。如下:
复制代码
struct HE{ int a;};int main(){ HE d={3}; // 因为 HE在C++是类名,可以省略struct。C语言里面要加上struct 才行。 return 0;}
复制代码
也可以使用类的初始化方式
复制代码
struct HE{ int a;};int main(){ HE d; d.a = 3; return 0;}
复制代码
4. 类型不同,下面代码:struct HE{ int a;};
在C里面实际上数据类型为 (struct HE),所以定义一个结构HE变量都要 带上struct.
struct HE a; //C语言 变量方式
而在C++里面实际上数据类型为HE(主要是因为结构体被当成类对待了),所以定义变量不需要 struct.
HE a; //C++语言 变量
5. typedef struct 在C++和C语言中都是一样的功能,定义别名。 但是要注意下面的代码的区别
//代码一
复制代码
#include <stdio.h>#include <stdlib.h>typedef struct HE { int a;} *PHE,DHE,EHE; //这是定义了一个struct HE*类型别名和两个普通别名,main函数只考虑指针型别名。int main(){ PHE a = (PHE)malloc(sizeof(struct HE)); //这是C语言的写法 //PHE a = new HE(); 这是C++语言的写法 return 0;}
复制代码
//代码二#include <stdio.h>#include <stdlib.h>struct HE { int a;} *PHE,DHE,EHE; //这里定义了一个指针型变量和两个普通变量
上面两个代码省略 struct的名字 HE都是可以的。
总结:C++语言因为是和C语言兼容的,所以C语言的语法在C++编译器里不会出错,但是程序员最好知道什么是C语言,什么是C++语言。
- C 语言和C++语言的 struct对比
- C 语言和C++语言的 struct对比
- C 语言和C++语言的 struct对比
- C 语言和C++语言的 struct对比
- C 语言和C++语言的 struct对比 & struct和typedef struct
- go语言和C语言的对比
- c语言的union和struct
- C语言--struct和union
- C语言中的struct和typedef struct
- C语言中 typedef struct 和 struct
- C语言中struct和typedef struct的区别
- C语言struct和typedef struct的区别
- C 语言struct的知识
- c语言 struct 的初始化
- C语言的struct定义
- C语言struct机制
- c语言之struct
- C语言-Struct
- Mac 下配置 Git 服务器
- Apriori算法详解之【二、伪代码和例子】
- 开方
- SUN服务器
- 使用JS charts来画图表(一)——条形图
- C 语言和C++语言的 struct对比
- poj 2236 Wireless Network 并查集
- [Python学习] 简单网络爬虫抓取博客文章及思想介绍
- OC语言字典
- 通过异或交换变量的数值
- domino服务器上,如何在服务器设置定时(每周)压缩数据库?
- DDR3的理
- 渐开线函数工具
- 90行python搭一个音乐搜索工具 —— Song Finder