问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++中两个局部变量和全局变量,变量名相同,请问内存空间如何分配?

发布网友 发布时间:2022-04-22 17:31

我来回答

4个回答

热心网友 时间:2023-11-13 23:28

第一点:一个由 c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式
类似于数据结构中的栈。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。
注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量
和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结
束后有系统释放

4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
例子程序:

//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0 在常量区,p3 在栈上。
static int c =0; 全局(静态)初始化区

p1 = (char *)malloc(10);

p2 = (char *)malloc(20);

分配得来得 10 和 20 字节的区域就在堆区。

strcpy(p1, "123456"); 123456\0 放在常量区,编译器可能会将它与 p3 所指向的"123456"优化成一个
地方。

}

第二点:关于函数调用:

在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语
句)的地址,然后是函数的各个参数,在大多数的 C 编译器中,参数是由右往左入栈的,然后是函数

中的局部变量。注意静态变量是不入栈的。

当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就
是主函数中的下一条指令,程序由该点继续运行。

第三点:关于变量的作用域:

变量类别 子类别

静态变量(离开函数,变量值仍保留)
局部变量 自动变量
寄存器变量

全局变量 静态变量(只能在本文件中用)
非静态变量(允许其他文件使用)追问谢谢!

热心网友 时间:2023-11-13 23:28

因为整个程序里只有一句int x;也就是只有一个声明x变量的语句。这样一来程序里使用的所有x都是同一个变量。只不过声明的时候你没有初始化而是在main函数里初始化为5,然后在cude函数里求3次方运算又返回给了x,这样毫无疑问的x的值就是5的3次方了。x的内存只有一个全局的。

热心网友 时间:2023-11-13 23:29

这些x都是指全局变量x,因为你这个程序里只定义了一个x。
定义局部变量x需要再函数内部 int x;
直接使用x不是定义。

全局变量存储在全局数据区,知道程序结束生命期在结束。
局部变量存储在堆栈区,生命期在函数被调用开始到函数执行结束。

热心网友 时间:2023-11-13 23:30

它们都是同一个x,即定义的全局变量int x。这个x是全局通用的。
还有给你点建议,main()最好定义为int型,这是ANSI C++规定的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 空间中五个平面最多可以把空间分成几个部分? 3个平面能否分割5个空间 5度空间是什么意思 为什么qq不能同时打开超过五个好友的空间?? C语言编程,使用malloc函数分配5个存整数的空间,对5个空间赋值 五个立方空间可以装多少混泥士? 第五度空间的介绍 C语言编程,使用malloc函数分配5个存整数的空间,对5个空间赋值 宇宙是几维的? 子宫脱垂怎么办? 五维空间是什么? 子宫脱垂怎么治疗 ?对女性的危害严重吗? 子宫脱垂是怎么回事?严重吗会有哪些影响呀? 子宫脱垂分为哪几种? 子宫脱垂怎么办?会有那些影响呢? 子宫脱垂的话,应该怎么办? 子宫脱垂怎样治疗? 营销加好友软件最有效的是哪家? 财付通的目标市场和盈利模式是什么? 腾讯在财付通服务中怎样获得收益? 百度输入法的按键音怎么关闭 5个平面把空间分为最多几份? 如何更改网页快捷方式的图标? 怎么把网页设置成桌面图标 如何在桌面上添加网页快捷图标 网页快捷方式图标 如何在桌面创建网址快捷图标 装电子白板在电脑上的步骤 怎么把QQ浏览器设在桌面有快捷方式的图标? 电子白板没检测到pc模式 手机浏览器怎么把网站设置到桌面快捷方式 电子白板有什么作用? 电脑桌面有删除不掉的快捷方式怎么办 目前市场上的电子白板方案有哪些? 桌面上网页快捷方式的图标变成了地球 我的电脑桌面都变成了这些网页快捷图标了,怎么办? [电子白板]电子白板有哪些种类? 火狐如何创建网页快捷方式到桌面 电子白板出现无信号该怎么办? 怎么删除桌面上的网页快捷方式图标?