C++基础——C++对比C语言的增强

1.局部变量定义的增强

void func()
{
    int a;
    printf("hello...\n");
    int b;
    b=10;
}

在C编译器中,运行错误,a和b必须在最开始声明;
在C++编译器中,运行正常,局部变量随时用,随时声明即可。

2.register关键字的增强

register关键字作用:

register a; // 请求编译器让变量a直接放在寄存器里面,速度快

c语言中, register修饰的变量 不能取地址,

C++编译器有自己的优化方式,不使用register也可能做优化
C++中可以取得register变量的地址,C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。

void  func()
{
	register int a = 0; 

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

在C中运行错误,C++中正常运行。

不使用register也会做优化:

void  func()
{
	for(int i=0;i<100;i++)// 频繁使用的变量i,C++会自动放进寄存器中优化
	{
		printf("i=%d;\n",i);
	}
}

3.变量检测增强

int g_var=210;
int g_var;

int main(int argc, char *argv[])
{
	printf("g_var = %d\n", g_var);
	return 0;
}

在C语言中,输出正常:210;
在C++中,运行出错,变量重定义。

4.Struct关键字的类型增强

C语言struct定义了一组变量的集合,C编译器不认为这是一种新的类型;
C++编译器中的struct是一个新类型的定义声明;

struct Student
{
    char name[100];
    int age;
};

int main(int argc, char *argv[])
{
    Student s1 = {"wang", 1};
    // C语言中必须前面加上struct关键字:
    // struct  Student s1 = {"wang", 1};
    // struct  Student s2 = {"wang2", 2};
    Student s2 = {"wang2", 2};    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值