Linux C/C++ 区别:类型声明、struct

C有数组、结构体、指针、函数、宏

C++有命名空间、引用、默认参数、模板、函数重载、自定义操作符、内联、构造/析构、私有/保护成员、友元、异常。

一、数据类型的声明

  1. C++允许数据声明出现在程序的任意位置

  C代码(异常)

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3
 4 int main(int argc, char* argv[])
 5 {
 6         for(int i=0; i<5; i++)
 7                 printf("hello %d\n", i);
 8
 9         return 0;
10 }

  C++代码(正常)

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4
 5 int main(int argc, char* argv[])
 6 {
 7         for(int i=0; i<5; i++)
 8                 printf("hello %d\n", i);
 9
10         return 0;
11 }

  2. c++允许使用结构体名定义实体

  C代码(异常)

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <string.h>
 4
 5 //C语言中不能直接使用结构体名定义实体
 6 struct Person
 7 {
 8         char name[20];
 9         int age;
10 };
11
12 int main(int argc, char* argv[])
13 {
14         //struct Person person;
15         Person person;
16
17         strcpy(person.name, "Tom");
18         person.age = 5;
19
20         printf("%s age is %d\n", person.name, person.age);
21
22         return 0;
23 }

  C++代码(正常)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5
 6 //C++中可以直接使用结构体名定义实体
 7 struct Person
 8 {
 9         char name[20];
10         int age;
11 };
12
13 int main(int argc, char* argv[])
14 {
15         //
16         Person person;
17
18         strcpy(person.name, "Tom");
19         person.age = 5;
20
21         printf("%s age is %d\n", person.name, person.age);
22
23         return 0;
24 }

二、struct

  1. C++允许对struct内数据成员进行操作的函数,作为struct成员声明。

  C代码(异常) 

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <string.h>
 4
 5 //C中不允许对struct内数据成员进行操作的函数,作为struct成员声明
 6 struct Person
 7 {
 8         char name[20];
 9         int age;
10
11         //
12         void output() { printf("%s age is %d\n", name, age); }
13 };
14
15 int main(int argc, char* argv[])
16 {
17         struct Person person;
18
19         strcpy(person.name, "Tom");
20         person.age = 5;
21
22         person.output();
23
24         return 0;
25 }

  C++代码(正常)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5
 6 //C++中允许对struct内数据成员进行操作的函数,作为struct成员声明
 7 struct Person
 8 {
 9         char name[20];
10         int age;
11
12         //
13         void output() { printf("%s age is %d\n", name, age); }
14 };
15
16 int main(int argc, char* argv[])
17 {
18         //
19         Person person;
20
21         strcpy(person.name, "Tom");
22         person.age = 5;
23
24         person.output();
25
26         return 0;
27 }
时间: 2024-10-15 10:53:17

Linux C/C++ 区别:类型声明、struct的相关文章

[转]如何理解c和c ++的复杂类型声明

本文作者girlrong是网易广州社区的C语言版版主,这篇文章被选在精华区.很是不错,不敢独享!据说她乐于助人,虚心诚恳,颇受网友欢迎.只可惜现在已退隐江湖了.在最近学习C语言过程中,了解些前辈大牛的经验看法 曾经碰到过让你迷惑不解.类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗? 本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明.我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让

socket在windows下和linux下的区别

windows到Linux代码移植遇到的问题 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2.网络 ------ 转载 & 修改(待整理) socket相关程序从windows移植到linux下需要注意的 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup linux下不需要 3)关

DOCTYPE 文档类型声明

DOCTYPE声明文档类型,以便验证文档是否符合文档类型定义(DTD),同时指定了浏览器关于页面使用哪个HTML版本进行编写的指令.开发人员在编写完html代码后,要进行有效性验证.w3c提供了一个验证文档有效性的在线服务:http://validator.w3.org/. DOCTYPE声明不是html标签,必须放在html文档的第一行,而且绝不能在它之前添加xml声明语句,否则在IE6会触发怪异模式.在HTML 4.0中,DOCTYPE引用了DTD,因为HTML 4.0基于SGML.DTD规

Docs-.NET-C#-指南-语言参考-关键字-值类型:struct

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征. 下面的示例显示了一个简单的结构声明: C#复制 public struct Book { public decimal price; public string title; public string author; } 备注 结构还可以包含构

Linux基础概念-----文件类型

普通文件:非目录或其他类型文件(-) 目录文件(d):Linux下目录也是文件,不过目录文件里面存放着是其他文件或目录的名字和对应的indoe号 indoe维基百科:inode是指在许多"类Unix文件系统"中的一种数据结构.每个inode保存了文件系统中的一个文件系统对象(包括文件.目录.设备文件.socket.管道, 等等)的元信息数据,但不包括数据内容或者文件名. 百度百科: inode 编号 用来识别文件类型,以及用于 stat C 函数的模式信息 文件的链接数目 属主的 UI

《samba搭建win客户端和linux客户端的区别》

samba服务的搭建 客户的使用系统的不同也导致测试结果的不同. linux系统客户端: security = user or share smbclient -L //192.168.7.113/westos  都是可以看到共享目录的, 二者不同之处在于,   security = user 时 [[email protected] samba]# smbclient //192.168.7.113/westos Enter root's password: Anonymous login s

HTML——文档类型声明

HTML DOCTYPE 标签 -- DTDs 文档类型声明 DOCTYPE 标签 -- 定义了标准文档的类型 DOCTYPE标签是单独出现的 说明: 文档类型,会使浏览器使用相应标准加载网页并显示 文档类型定义在HTML文档的第一行,在html标签之前 文档不定义DOCTYPE,浏览器将无法获知HTML或XHTML文档的类型,因此会进入混乱模式 DOCTYPE,简称为DTDs,是英文Document type的缩写,中文“文档类型” HTML DOCTYPE文档类型举例说明 HTML4.01文

5 个在 Linux 中管理文件类型和系统时间的有用命令

对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同的命令,你应该每天使用终端并明白怎样将命令和不同选项以及参数一同使用. 在 Linux 中管理文件类型和设置时间 请先查看我们 Linux 小技巧系列之前的文章: 5 个有趣的 Linux 命令行技巧 给新手的 10 个有用 Linux 命令行技巧 在这篇文章中,我们打算看看终端中 5 个和文件以及

为Linux虚拟机更改网卡类型从E1000到VMXNET3

用户为什么要从E1000调整为VMXNET3,理由如下: E1000是千兆网路卡,而VMXNET3是万兆网路卡: E1000的性能相对较低,而VMXNET3的性能相对较高: VMXNET3支持TCP/IP Offload Engine,E1000不支持: VMXNET3可以直接和vmkernel通讯,执行内部数据处理: 我们知道VMware的网络适配器类型有多种,例如E1000.VMXNET. VMXNET 2 (Enhanced).VMXNET3等,就性能而言,一般VMXNET3要优于E100

标量类型与返回值类型声明

PHP 标量类型与返回值类型声明  PHP 7 新特性 标量类型声明 默认情况下,所有的PHP文件都处于弱类型校验模式. PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式: 强制模式 (默认) 严格模式 标量类型声明语法格式: declare(strict_types=1); 代码中通过指定 strict_types的值(1或者0),1表示严格类型校验模式,作用于函数调用和返回语句:0表示弱类型校验模式. 可以使用的类型参数有: int float bool string inter