当前位置:首页 > 内存 > 正文

内存变量名的命名

  • 内存
  • 2024-06-14 20:26:21
  • 2675

一、这是c++的一段代码,结果是10和20,请问高手为什么得这两个值?由于函数传递的参数是引用,因此int&f(int&i)函数中对i的任何更改都会更改实际传递的参数,即程序中的k,因此,在int&f(int&i)函数中将i加10后,i=10表示实参k为10,所以第一次输出k为10。第二次输出为20,因为第一次调用int&f函数(int&i)返回一个引用,该引用是i的值的引用,而i是对实际参数k的引用,所以实际上m是k的引用,只是k的别名,所以随后m=20实际上给k赋值为20,所以第二个输出是20。


二、堆栈是什么?程序内存分配知识点

在计算机领域,栈是一个不可忽视的概念,但是很多人,甚至是计算机专家,都不明白栈其实是两个数据结构。栈是一种数据结构,其中有序数据项只能在一端(称为栈顶)插入和删除。
📚堆和栈的区别
堆:随机顺序:后进/先出(Lastin/Firstout)。
🧱内存分配
C/C++编译后的程序占用的内存分为以下几部分:栈区、堆区、全局区(静态区)、字面常量区、代码区程序。
📊栈区
由编译器自动分配和释放,用于存储函数参数值、局部变量值等。它的工作原理类似于数据结构中的堆栈。
📈堆
通常由程序员分配和释放。如果程序员不释放它,程序结束时可以被操作系统回收。注意,它与堆的不同之处在于它的数据结构和分配方法与链表类似。
🌍全局区(静态区)
全局变量和静态变量存储在一起。初始化的全局变量和静态变量位于同一区域。邻里。程序结束后由系统释放。
📝文字常量区
常量字符串放置于此,程序结束后由系统释放。
💻程序代码区
存放函数体的二进制代码。
🌟示例程序
这个程序是学长写的,非常详细。
📌内存分配
在堆中分配了10和20字节的区域。
🔍搜索字符串
123456\0被放置在常量区域中,编译器可以将其优化到与p3指示的“123456”相同的位置。