c++系统学习总结(较全)

开学已有一月之多,在这段时间内,我系统的学习了c++的许多原理和知识,对c++的认识由浅入深。随着学习的深入,我越发感受到了c++作为一款面向对象程序设计语言的精密奥妙。我渴望用c++去开发一些能对我们日常生活产生有益影响的软件,我也极其渴望用编程改变世界。
下面对这个月所学的知识进行全面而细致的总结:

首先,c11增加了许多新内容,让某些情况下的编程更加方便了

总结:
1.constexpr对象
如果认定某个对象是常量表达式,可以把它声明为constexpr类型
大多数情况下constexpr和const在使用上没有区别
如果b是全局作用域中的名字编译器一定会为b分配空间
对于a,如果没有代码明确要使用a的地址,编译器可以选择不为a分配存储空间,而仅将其当作编译时期的值,类似于字面值常量
2.auto类型说明符
auto类型说明符
用auto声明变量的类型,由编译器去自动分析表达式的类型,推断出变量的实际类型,方便了程序员的编程
定义auto变量必须有初始值
3.decltype类型指示符
作用是选择并返回操作数的类型
编译器会分析表达式的类型,并不真正计算表达式的值

用auto和decltype可以方便程序的书写,使程序员不需要记忆大量复杂的类型
希望从初始值表达式推断出要定义的变量的类型时,用auto
希望从表达式推断出要定义的变量的类型,但是又不想用这个表达式的值初始化该变量时,用decltype
4.range-for是一种简化的for语句
从头至尾对容器或序列的所有元素逐个执行某种操作
range-for语句的语法形式

以上是c11新增的内容,

我们知道,一切数据都存储在内存中,那一个个的地址就好似数据对象的门牌号一样。通过对内存地址的操作,程序命令的执行更加高效。指针就是这样一种对地址操作的工具。在学习了这一段时间的c++后,内存管理的概念在我脑海里有了深深的烙印。

在介绍指针前,先让我们对内存深刻解释一下:
内存地址
程序运行时,代码和需要的数据都被存储在内存中
内存是有序的字节序列,每个字节都有唯一的地址,使用该地址可以确定字节的位置,用以存储和获取数据
直接访问和间接访问
通过变量的名字直接访问为程序中定义的变量分配的内存单元,存取变量的值
使用变量的内存地址找到存放数据的单元,间接访问其中的内容

下面正式介绍指针:

指针的特点
指针持有一个对象的地址,称为指针“指向”该对象
通过指针可以间接操纵它指向的对象

int  *pi;
int* pi;	
char *pc1, *pc2;
char* pc1, pc2;	
char *pc1, pc2;	
char* pc1, *pc2;

取地址运算符
指针存放指定类型对象的地址,要获取对象的地址,使用取地址运算符“&”

int ival = 120;
int  *pi = &ival;	
		// pi存放int变量ival的地址
		// 或者说pi指向ival
char ch = 'a', *pc = &ch;
		// pc指向字符型变量ch

指针解引用运算符“*”
如果指针指向一个对象,则可以通过指针间接访该对象,使用指针解引用运算符“*”

int x = 100, y = 20;
int *pi = &x;
*pi = y;		
		// 间接操作pi指向的x,即x = y
注意:指向一个对象的指针有两个存储单元与之相关
一个是指针自己的存储单元,里面存放着所指对象的地址;
另一个就是指针指向的对象的存储单元,里面存放该对象的值。
可以定义存放指针对象的地址的指针


 int ival = 1024;
    int *pi = &ival;
    int **ppi = π  //ppi是指针的指针,存放pi的地址
     
    int ival = 1024;
    int *pi = &ival;

)
指针的类型
指针的类型即指针指向的类型
每个指针都有相关的类型,需要在定义指针时指出
type* pointer
指针的类型指出了如何解释该内存地址保存的内容,以及该内存区域应该有多大
不同类型指针的表示方法和保存的地址值并没有分别,区别只是指针指向的对象类型不同

int *pi;  
char *pc;
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值