//区别①:实用性增强
#include<iostream>
using namespace std;
//C语言中的变量都必须在作用域开始的位置定义!!
//C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。 void main(){
int a = ;
printf("ddddd");
int kk;//这样定义KK,C语言会在在VC6.0中会报错,在vs2013不会;但是c++却支持这种定义
system("pause");
}
//区别②:register关键字增强(C++版本)
#include<iostream>
using namespace std; //register关键字 请求编译器让变量a直接放在寄存器里面,速度快
//在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容
//register关键字的变化
//register关键字请求“编译器”将局部变量存储于寄存器中
//C语言中无法取得register变量地址
//在C++中依然支持register关键字
//C++编译器有自己的优化方式,不使用register也可能做优化
//C++中可以取得register变量的地址
//C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
//早期C语言编译器不会对代码进行优化,因此register变量是一个很好的补充。 void main(){
//在c++中,如果一个变量多次出现或者经常使用,c++编译器会自动对这个变量使用register做优化
//这里的i,c++编译器就会自动对i用register优化
//register int i = 0;
int i = ;
for (i = ; i < ; i++)
{
;
}
printf("register修饰变量的地址是%x\n", &i);
//C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
//此时c++编译器会对i变量做处理,使得register对变量i的声明变得无效
system("pause");
}
//区别②:register关键字增强(C语言版本)
#include<stdio.h>
#include<stdlib.h>
#include<string.h> void main(){
register int i = ;
for (i = ; i < ; i++)
{
;
}
printf("register修饰变量的地址是%x\n",&i);// 打印 error C2103 : 寄存器变量上的“&”
//register关键字请求“编译器”将局部变量存储于寄存器中,寄存器上当然取不到内存的地址
//所以C语言中无法取得register变量地址 system("pause");
}

//区别③:全局变量检测增强(C++版本)
#include<iostream>
using namespace std; //在C++中,不允许定义多个同名的全局变量
//C++直接拒绝这种二义性的做法。
int g_var;
int g_var;
int g_var = ; void main(){
system("pause");
}

//区别③:全局变量检测增强(C语言版本)
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //在C语言中,重复定义多个同名的全局变量是合法的
//C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上
int g_var;
int g_var;
int g_var=; void main(){ system("pause");
}

C++ c++与C语言的区别(实用性增强,register关键字增强,全局变量检测增强)的更多相关文章

  1. C语言基础(8)-const,volatile,register关键字

    1 const const是定义一个常量 2 volatile 代表定义一个变量,这个变量值可能在CPU指令之外被改变 volatile int a;//定义了一个volatile类型的int变量 通 ...

  2. 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介

    [源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...

  3. JAVA和C语言的区别

    java语言和c语言的区别:                                      1 un 公司推出的Java 是面向对象程序设计语言,其适用于Internet 应用的开发,称为 ...

  4. 【转】 C语言深度解剖读书笔记(1.关键字的秘密)

    本文出处:http://blog.csdn.net/mbh_1991/article/details/10149805 开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有 ...

  5. Java语言基础(二) Java关键字

    Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...

  6. C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)

    //区别④:struct类型的加强(C++版本) #include<iostream> using namespace std; //C++中的struct是一个新类型的定义声明 //c+ ...

  7. python与其他语言的区别

    C 和 Python.Java.C#等 C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作 其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处 ...

  8. C++ c++与C语言的区别(三目运算符,const修饰符)

    //区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...

  9. C++ c++与C语言的区别(空结构体)

    //区别⑨:空结构体声明(C++版本) #include<iostream> using namespace std; struct A{}; class B{}; void main() ...

随机推荐

  1. iOS 获取UIView所在的VIewController

    写程序的时候我们经常要封装代码,当你封装了一个UIView的子类里需要调用所在ViewController的方法用如下代码调取所在的VIewController #pragma mark - 获取所在 ...

  2. C标准库<signal.h>实现

    本文地址:http://www.cnblogs.com/archimedes/p/c-library-signal.html,转载请注明源地址. 背景知识 signal.h是C标准函数库中的信号处理部 ...

  3. 【读书笔记】iOS-装箱

    通常将一个基本类型的数据包装成对象叫做装箱,从对象中提取基本类型的数据叫做取消装箱.有些语言有自动装箱功能,它可以自动包装基本基础类型的数据,也可以自动从包装后的对象中提取基础数据.Objective ...

  4. CoreAnimation动画(CALayer动画)

    #pragma mark - CABasicAnimation动画 - (IBAction)basicAnimation:(UIButton *)sender { // 1.创建动画对象 CABasi ...

  5. 五种创建UIImage的类方法

    五种创建UIImage的类方法 UIImage有五个类方法,用来创建UIImage的.下面介绍一下每个类方法的作用和创建实例. 1.使用类方法imageNamed:创建 + (UIImage *)im ...

  6. Objective-C之Category的使用

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. 基于Ubuntu虚拟机安装edx-platform

    基于Ubuntu虚拟机安装edx-platform   一. 前提准备 1. 虚拟机中安装Ubuntu12.04,然后再使用Vagrant方式搭建开发环境,请确保这个虚拟机可以使用2GB的内存,否则容 ...

  8. PowerDesigner执行SQL生成模型

    PowerDesigner版本:15.2.0 步骤如下: 1.打开PowerDesigner软件如下图: 2.选择:File->Reverse Engineer->Database... ...

  9. 用PowerDesigner将SQL语句生成实体类

    1.首先打开PowerDesigner,点击左上角“File”—>"Reverse Engineer"—>"Database..." 2.选择数据库 ...

  10. Dos

    一.简介 https://zh.wikipedia.org/wiki/DOS 二.系统下载 http://www.cn-dos.net/newdos/doswarea.htm 三.实用命令 1)查看系 ...