ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++笔记--语法增强(1-2)

2021-06-27 09:05:18  阅读:149  来源: 互联网

标签:变量 -- register C++ C语言 语法 int 编译器


1 实用性”增强

//C语言中的变量都必须在作用域开始的位置定义!!

//C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义

int main()
{
	int i = 0;

	printf("ddd");
	int k;
	system("pause");
	return 0;
}

2 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;
}

3 函数检测增强

/*

在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 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;
}

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++更加强调类型,任意的程序元素都必须显示指明类型

标签:变量,--,register,C++,C语言,语法,int,编译器
来源: https://blog.csdn.net/xiangjai/article/details/118265773

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有