1、C到C++的升级

C到C++的升级

C++编译器对 const 常量的处理

  • 当碰见常量声明时在符号表中放入常量
  • 编译过程中若发现使用常量则直接以符号表中的值替换
  • 编译过程中若发现对 const使用了 exter或者&操作符,则给对应的常量分配存储空间

注意:

  • C++编译器虽然可能为 const 常量分配空间,但不会使用其存储空间中的值
    c++符号表
  • C语言中 const 变量是只读变量
    • 有自己的存储空间
  • C++中的 const 常量可能分配存储空间
    • 当 const 常量为全局,并且需要在其它文件中使用
    • 当使用&操作符取 const 常量的地址

案例代码:

C++中的 const小结

  • C++中的 const常量类似于宏定义
    • const int c= 5 <=> #define c 5
  • C++中的 const 常量在与宏定义不同
    • const常量是由编译器处理的,提供类型检查和作用城检查区
    • 宏定义由预处理器处理,是单纯的文本替換

c++中const和宏定义的区别:

#include<stdio.h>

void f()
{
	#define a 3
	const int b = 4;
}

void g()
{
	printf("a=%d \n",a);
	//printf("b=%d \n",b);
}

int main(int argc,char *argv[])
{
	f();
	g();
	
	printf("press enter to continue");
	getchar();
	return 0;
}

C++对struct类型的加强

  • C语言的 struct 定义了一组变量的集合,C编译器并不认为这是一种新的类型
  • C++中的 struct 是一个新类型的定义声明:
 struct Student
 {
 	const char* name;
 	int age;
 };
 	Student s1;
 	Student s2;

代码 案例:

#include<stdio.h>

struct Student
{
	const char* name;
	int age;
};

int main(int argc,char *argv[])
{
	Student s1 = {"zhang",30};
	Student s2 = {"wang",27};
	
	printf("press enter to continue");
	getchar();
	return 0;
}

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

C语言中的默认类型在C++中是不合法的

在这里插入图片描述
问题:
1.函数 f 的返回值是什么类型,参数又是什么类?
2.函数 g 可以接受多少个参数?

思考:

int f();

int f(void);

的区别是什么?

在C语言中

int f();

表示返回值为int,接受任意参数的函数

int f(void);

表示返回值为int的无参函数

在C++中

  • int f(); 和 int f(void) 具有相同的意义,都表示返回值为 int 的无参函数。

小结:

  • C++以C语言为基础进行了加强C++更强调实用性,可以在任意的地方声明变量
  • C++中的 register只是一个向后兼容的作用,C++编译器能够进行更好的变量优化
  • C++中的 cons t是一个真正意义上的常量,而不是只读变量
  • C++更加强调类型,任意的程序元素都必须显示指明类型
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值