本文主要是整理一些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. Java-Base64工具类

    /* * Base64 encoding and decoding. * Copyright (C) 2001-2004 Stephen Ostermiller * http://ostermille ...

  2. Blade 模板

    在Laravel 5.3中,@foreach指令提供了更加强大的功能,在每一个@foreach循环体中都可以调用一个新的$loop变量.该变量是一个stdClass实例,包含了当前循环的元数据信息,让 ...

  3. 22.Python赋值运算符(入门必读)

    赋值运算符主要用来为变量(或常量)赋值,在使用时,既可以直接用基本赋值运算符“=”将右侧的值赋给左侧的变量,右侧也可以在进行某些运算后再赋值给左侧的变量. = 基本赋值运算符 Python 使用“=” ...

  4. leetcode题目11.盛最多水的容器(中等)

    题目描述: 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其 ...

  5. c# 调用CMD命令并获取输出结果

    private static string CMDPath = Environment.GetFolderPath(Environment.SpecialFolder.System) + " ...

  6. oracle查看表空间的大小及使用情况sql语句

    --------------------------tablespace------------------------------------------------ 1.//查看表空间的名称及大小 ...

  7. koa 路由、视图模块化(二)

    1.项目目录 2.路由 根目录/routes/index.js -- 首页 const router = require('koa-router')(); router.get('/', async ...

  8. windos批处理启动redis与哨兵

    为各个启动单独建立脚本后用总的bat调用 创建脚本,redis6379.bat脚本内容:@echo offtitle redis-serverset ENV_HOME6379="G:\Red ...

  9. vue路由嵌套,对应展示的视图

  10. Popover 弹出框

    基础用法 Popover 的属性与 Tooltip 很类似,它们都是基于Vue-popper开发的,因此对于重复属性,请参考 Tooltip 的文档,在此文档中不做详尽解释. 设置索引ref,在按钮中 ...