c++对c实用性增强

#include "iostream"
using namespace std;
//C 语言中的变量都必须在作用域开始的位置定义!!
//C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义

#include "iostream"
using namespace std;
//C 语言中的变量都必须在作用域开始的位置定义!!
//C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义

4.3 register 关键字增强
//register 关键字 请求编译器让变量 a 直接放在寄存器里面,速度快
//在 c 语言中 register 修饰的变量 不能取地址,但是在 c++里面做了内容
/*
//1
register 关键字的变化
register 关键字请求“编译器”将局部变量存储于寄存器中
C 语言中无法取得 register 变量地址
在 C++中依然支持 register 关键字
C++编译器有自己的优化方式,不使用 register 也可能做优化
C++中可以取得 register 变量的地址
//2
C++编译器发现程序中需要取 register 变量的地址时,register 对变量的声明变得无效。
//3
早期 C 语言编译器不会对代码进行优化,因此 register 变量是一个很好的补充。
*/
int main22()
{
register int a = 0;
printf("&a = %x\n", &a);
system("pause");
return 0;
}

4.4 变量检测增强
/*
在 C 语言中,重复定义多个同名的全局变量是合法的
在 C++中,不允许定义多个同名的全局变量
C 语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上
int g_var;
int g_var = 1;
C++直接拒绝这种二义性的做法。
*/
int main(int argc, char *argv[])
{
printf("g_var = %d\n", g_var);
return 0;
}

4.5 struct 类型加强
struct 类型的加强:
C 语言的 struct 定义了一组变量的集合,C 编译器并不认为这是一种新的类型
C++中的 struct 是一个新类型的定义声明
struct Student
{
char name[100];
int age;
};
int main(int argc, char *argv[])
{
Student s1 = {"wang", 1};
Student s2 = {"wang2", 2};
return 0;
}

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

C++中所有的变量和函数都必须有类型
C 语言中的默认类型在 C++中是不合法的
函数 f 的返回值是什么类型,参数又是什么类型?
函数 g 可以接受多少个参数?
*/
//更换成.cpp 试试
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));
getchar();
return 0;
}
总结:
/*
在 C 语言中
int f( );表示返回值为 int,接受任意参数的函数
int f(void);表示返回值为 int 的无参函数
在 C++中
int f( );和 int f(void)具有相同的意义,都表示返回值为 int 的无参函数
*/
C++更加强调类型,任意的程序元素都必须显示指明类型

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值