大家好,我是梁唐。想要追求更好阅读体验的同学可以点击“阅读原文”访问github仓库。自动存储持久化的概念乍一看很啰嗦,其实很简单。它指的是函数定义中声明的变量的存储持久化是自动的:它们是在程序开始执行它们所属的函数或代码块时创建的,函数或代码块使用的内存在它们完成执行时被释放。默认情况下,我们在函数中声明的变量和函数的参数都是自动存储持久化的,它的作用是局部的,没有联动。此处的链接描述了不同单元之间如何共享名称。linkage是指文件间可以共享外部名称,linkage是指内部名称只能由一个car文件中的函数共享。自动变量的名字是没有联系的,即不能共享。这段话是专业的描述,看不懂也没关系。简单理解,就是如果我们在main函数中声明了一个变量a,在函数test中声明了同一个变量a。两者是完全独立的,不会相互产生任何影响,因为它们只能在声明它的函数中使用。当程序执行测试函数时,创建测试中的a,当测试执行结束时,销毁a。实际上,变量作用域的最小划分并不是一个函数,而是一个代码块。我们在代码块中创建的变量只有在当前代码块中才有使用范围。例如:intmain(){inta=4;{intb=10;}}我们在main函数中定义了一个变量a和一个变量b,但是这两个变量定义在不同的位置。b在代码块中定义(代码块用花括号表示)。对于a,它的作用域是整个main函数,而b只在花括号内生效。比较有意思的是下面的代码:intmain(){inta=4;{inta=5;cout<
