C++对C的增强

1、命名空间

2、实用性增强

C语言中的变量都必须在作用域开始的位置定义;C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。

#include <stdio.h>
int main()
{
int i=0;


printf("hello...\n");
int k;
return 0;
}

在vc6.0中(使用的是c编译器)编译出错;vs中(使用c++编译器)编译通过



3、register关键字增强

register关键字,请求编译器让变量a直接放在寄存器里面,速度快。

在C语言中register修饰的变量不能取地址;

在C++中依然支持register关键字,C++编译器有自己的优化方式,不使用register也可以优化,C++可以取得register变量的地址。

#include <stdio.h>
int main()
{
register int a=0;


printf("&a=%x\n",&a);

system("pause");
return 0;
}



4、变量检测增强

在C语言中,重复定义多个同名的全局变量是合法的。

在C++中,不允许定义多个同名的全局变量。

#include <stdio.h>
int a;
int a=100;


int main()
{


printf("a=%d\n",a);


return 0;
}



5、struct类型加强

C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型。

C++中的struct是一个新类型的定义声明。

#include <stdio.h>
struct Student
{
char name[32];
int age;
};
int main()
{
struct Student t1;
t1.age=10;

printf("age=%d\n",t1.age);


return 0;
}



6、C++中所有的变量和函数都必须有类型

#include <stdio.h>
f(i)
{
printf("i=%d\n",i);
}
g()
{
return 5;
}
int main(int argc,char*argv)
{
f(10);

printf("g()=%d\n",g(1,2,3,4,5));

return 0;
}




C++中正确代码应该是:

#include <iostream>
void f(int i)
{
printf("i=%d\n",i);
}
int g(int ,int ,int ,int ,int )
{
return 5;
}
int main(int argc,char*argv)
{
f(10);

printf("g()=%d\n",g(1,2,3,4,5));

system("pause");
return 0;
}


7、新增Bool类型关键字

C++中的布尔类型

C++在C语言的基本类型系统之上增加了 bool。C++中bool类型只有true(非0)和false(0)两个值。bool理论上只占用一个字节。

#include <iostream>
using namespace std;


int main(int argc,char*argv)
{
bool b1=true;
cout<<"sizeof(bool):"<<sizeof(bool)<<endl;
b1=10;
bool b2=-10;
cout<<"b1="<<b1<<endl;
cout<<"b2="<<b2<<endl;
system("pause");
return 0;
}



8、三目运算符功能的增强

#include <stdio.h>

int main(int argc,char*argv)
{
int a=10;
int b=20;
(a<b?a:b)=30; //返回一个最小数,并且给最小数赋值成30//三目运算符是一个表达式,表达式不可能做左值

printf("a=%d,b=%d\n",a,b);

return 0;
}

在C语言中,表达式的结果放在什么地方?寄存器。

在C语言中,表达式的返回值是变量的值。a=10   =30;

在C++中,表达式返回变量的本身。

在C语言中实现C++的效果:

#include <stdio.h>
int main(int argc,char*argv)
{
int a=10;
int b=20;
*(a<b?&a:&b)=30; //返回一个最小数,并且给最小数赋值成30//三目运算符是一个表达式,表达式不可能做左值
printf("a=%d,b=%d\n",a,b);

return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值