本文主要是整理一些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. Acwing-169-数独2(搜索, 剪枝)

    链接: https://www.acwing.com/problem/content/171/ 题意: 请你将一个16x16的数独填写完整,使得每行.每列.每个4x4十六宫格内字母A~P均恰好出现一次 ...

  2. jquery实现input输入框点击加减数值随之变动

    <input class="addBtn min" type="button" value="-" /><input cl ...

  3. 交换机配置——跨交换机划分VLAN配置

    一.实验要求:实现跨交换地划分vlan的配置任务,使同一vlan下的主机能相互通讯 二.拓扑图如下; 三.具体实验步骤: S1交换机配置: S1>enable  --进入特权模式S1#confi ...

  4. 树的计数 + prufer序列与Cayley公式(转载)

    原文出处:https://www.cnblogs.com/dirge/p/5503289.html 树的计数 + prufer序列与Cayley公式 学习笔记(转载) 首先是 Martrix67 的博 ...

  5. 线性素数筛(欧拉筛)(超级好的MuBan)

    Problem:找出小于等于n的所有素数的个数. #include <bits/stdc++.h> using namespace std; const int maxn = 1e6; i ...

  6. mysql5.7提示密码过期的解决方法

    首先把MySQL关闭 打开一个终端,输入 sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 执行完命令后,再打开一个新的终端 sudo ...

  7. Lock和synchronized的区别

    总结来说,Lock和synchronized有以下几点不同: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现: 2)synchroni ...

  8. Jmeter(九)参数化

    参数化是自动化测试脚本的一种常用技巧.简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则: 这样,脚本在运行时就可以根据需要选取不同的参数值作为输入. ...

  9. Oracle-sql*plus

    连接命令 (1)conn[ect] 用法: conn 用户名/密码@网络服务名 [as sysdba/sysoper] 当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper ...

  10. 批量删除.svn文件夹、.svn文件

      使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除: 1.打开要删除.svn文件的最外层文件夹, ...