C++ Primer Plus笔记: 2023.06.30

1.C++新手在指定结构成员时,搞不清楚何时应使用句点运算符,何时应使用箭头运算符。如果结构标识符是结构名,则使用句点运算符,如果标识符是指向结构的指针,则使用箭头运算符。

2.输出char *类型的指针指向的字符数组的地址:

cout << name << " at " << (int *)name << "\n" ;

3.C++管理数据内存的方式:
(1)自动存储:

在函数内部定义的常规变量使用自动存储空间,被称为自动变量,这意味着它们在所属的函数被调用时自动产生,在该函数结束时消亡。实际上,自动变量是一个局部变量,其作用域为包含它的代码块。代码块是被包含在花括号中的一段代码。函数内也可以有代码块。如果在其中的某个代码块定义了一个变量,则该变量仅在程序执行该代码块中的代码时存在。

自动变量通常存储在栈中。这意味着执行代码块时,其中的变量将依次加入到栈中,而在离开代码块时,将按相反的顺序释放这些变量,这被称为后进先出(LIFO)。

(2)静态存储

使变量成为静态的方式有两种:一种是在函数外面定义它,另一种是在变量声明时使用关键字static

(3)动态存储

new和delete运算符管理了一个内存池,这在C++中被称为自由存储空间或堆。该内存池同用于静态变量和自动变量的内存是分开的。new和delete让您能够在一个函数中分配内存,而在另一个函数中释放它。因此,数据的生命周期不完全受程序或函数的生存时间控制。

4.关键字auto:
C++ 11新增了一个工具,让编译器能够根据初始值的类型推断变量的类型。为此,它重新定义了auto的含义。在初始化声明中,如果使用关键字auto,而不指定变量的类型,编译器将把变量的类型设置成与初始值相同。

auto n = 100 ;
auto x = 1.5 ;
auto y = 1.3e12L ;

5.模板类vector:
vector类似于string类,也是一种动态数组,它也用new和delete来管理内存,不过这些工作都自动完成。
vector使用案例如下:

#include <iostream>
#include <vector>
using namespace std ;

int main()
{
	vector<int> vi ;
	int n ;
	cin >> n ;
	vector<double> vd(n) ;
	
	for(int i=0; i<n; i++) cout << "vd[" << i << "] = " << vd[i] << endl ;
}

运行结果:

9
vd[0] = 0
vd[1] = 0
vd[2] = 0
vd[3] = 0
vd[4] = 0
vd[5] = 0
vd[6] = 0
vd[7] = 0
vd[8] = 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值