本文主要是整理一些C++与C的一些小的区别,也就是在使用C与C++时候需要注意的一些问题,C++是以C语言为基础的,并且完全兼容C语言的特性

注释

C语言的注释形式为

/*
注释内容
*/

而C++提供了另一种新的注释方式

//注释内容

但在C的发展过程中,慢慢接受了C++的注释方式,在C语言中也可以采用C++的注释方式了

变量的声明及初始化

在C语言中,局部变量的声明和初始化是分开的

int i;
for(i = 0; i < 10; i++);

而在C++中,声明和初始化可以放在一块儿

for(int i = 0; i < 10; i++);

这种规则,在C后来的编译器中也被允许了,但在C89及以前的C标准编译器是会报错的

函数原型的增强

在C语言中,对于函数原型的简化是很随意的,而C++做了强制的函数类型和返回参数说明

例如

int func(char, double);

以上函数声明在C语言中写作func();是合法的,这就造成了理解上的困难

增加了函数重载机制

这在C语言里面是没有的

C++可以通过重载,增加新的定义

增加缺省参数

C++允许函数有缺省参数

int func(int a, int b = 1)
{
return a*b;
}

此时,调用函数func(3,1)func(3),其得到的结果是相同的

动态存储的改变

C++提供了动态内存分配和释放的操作符newdelete,用来增强C语言中的malloc()free()

增加了内联函数

C++的内内联函数用以代替C语言中的宏,实现了函数调用的参数检查

输入/输出流机制

C++保留了C语言标准库中的各种输入输出函数,增加了新的输入输出机制-流机制

cout << "test";
int a;
cin >> a;

这种输入输出运算符可以根据变量类型自动确定数据交换过程中的转换方式

作用域限定运算符::

作用域限定运算符::用于对当前作用域之外的同名变量进行访问。

#include <iostream>

int a;
void main()
{
float a;
a = 3.14;
::a = 6;
cout << "local variable a = "<< a << endl;
cout << "global variable a = " << ::a << endl;
}

增强结构体

在C++中,结构体可以带有函数

而在C语言中,这样做是不允许的

声明结构体变量,在C语言里面是这样的

struct man m1;

而在C++中可以省略struct

man m1;

C++学习笔记-C++与C语言的一些区别的更多相关文章

  1. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  2. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

  3. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  4. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  5. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...

  6. 【学习笔记】【C语言】关系运算符

    1. 条件判断 默认情况下,我们在程序中写的每一句正确代码都会被执行.但很多时候,我们想在某个条件成立的情况下才执行某一段代码 这种情况的话可以使用条件语句来完成,但是我们暂时不学习条件语句,先来看一 ...

  7. go 学习笔记之初识 go 语言

    Go 是一种开源编程语言,可以轻松构建简单,可靠,高效的软件. 摘录自 github: https://github.com/golang/go,其中官网(国外): https://golang.or ...

  8. C++学习笔记-C++对C语言的扩充和增强

    C++兼容C,在C的基础上学习C++是一个不错的选择,也能够更好的了解C与C++的区别与联系. 变量定义 C语言中的变量都必须在作用域开始的位置定义 C++中更强调语言的实用性,所有的变量都可以在需要 ...

  9. 【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!

    问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...

随机推荐

  1. android的ant编译打包

    Android本身是支持ant打包项目的,并且SDK中自带一个build.xml文件. 通过该文件,可以对文件进行编译.打包.安装等.并且支持多种方式打包,如debug或者release. 一般的,可 ...

  2. USACO14MAR The Lazy Cow(Gold)

    题目 题意:平面上有 \(n\) 块草地,第 \(i\) 块草地坐标为 \((x_i,y_i)\) ,上面有 \(g_i\) 个单位的草.Bessie 可以吃到距离起始点不超过 \(k\)(这里是曼哈 ...

  3. ibatis和mybatis中的BatchExecutor

    ibatis中的的处理方法 spring集成了ibatis的批量提交的功能,我们只要调用API就可以了 首先在你的dao中需要继承org.springframework.orm.ibatis.supp ...

  4. linux系统下nginx/mysql/php启动、停止、重启命令

    /usr/local/nginx/sbin/nginx /etc/init.d/mysql start /usr/local/php/sbin/php-fpm start   #nginx命令     ...

  5. android启动模拟器命令

    参考资料:http://blog.csdn.net/sanjinxiong/article/details/6758222 启动模拟器 首先通过android list avd 查看建好的虚拟设备: ...

  6. 2019牛客暑期多校训练营(第一场)H 线性基+计算贡献

    题意 给n个整数,求满足子集异或和为0的子集大小之和. 分析 将问题转化为求每个元素的贡献次数之和. 先对n个数求线性基,设线性基大小为r,即插入线性基的数字个数为r,可以分别计算线性基内数的贡献和线 ...

  7. Linux之vnc启动及异常处理

    1)启动桌面1的服务 [root@testdb ~]# vncserver :1 New 'testdb:1 (root)' desktop is testdb:1 Starting applicat ...

  8. 实现自己的SpringMVC

    一.SpringMVC的工作原理 SpringMVC流程 1.  用户发送请求至前端控制器DispatcherServlet. 2.  DispatcherServlet收到请求调用HandlerMa ...

  9. zookeeper系列(四)zookeeper的使用场景

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6036548.html感谢原著公开这么好的博文供大家学习 ...

  10. PHP压缩图片并模糊处理(抄的哟)

    class image_blur{ /** * 图片高斯模糊(适用于png/jpg/gif格式) * @param $srcImg 原图片 * @param $savepath 保存路径 * @par ...