OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4193|回复: 7

C语言中关于变量定义的问题

[复制链接]

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
发表于 2023-5-18 16:51:28 | 显示全部楼层 |阅读模式
1金钱
有A、B两个函数,在A函数中调用B函数,那么在A中定义变量c后,还可以在B中定义变量c吗?两个变量会混乱吗?还是说两个变量是相对独立的两个变量?

最佳答案

查看完整内容[请看2#楼]

不会乱,百度: 变量的作用域 同名变量
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-5-18 16:51:29 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-5-18 17:13 编辑

不会乱,百度: 变量的作用域  同名变量
专治疑难杂症
回复

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
 楼主| 发表于 2023-5-18 17:30:34 | 显示全部楼层
LcwSwust 发表于 2023-5-18 16:56
不会乱,百度: 变量的作用域  同名变量

谢谢您,再问您一个问题,函数当中的局部变量是使用完就销毁还是等函数结束后销毁
回复

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
 楼主| 发表于 2023-5-18 17:33:16 | 显示全部楼层
编程中,不可能避免会出现同名变量。变量同名后不一定会出错。 1、如果两个同名变量作用域不同且没有交叠,这种情况下同名没有影响。 2、如果两个同名变量作用域有交叠,C语言规定在作用域交叠范围内,作用域小的一个变量会掩蔽掉作用域大的那种。
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-5-19 09:13:19 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-5-19 09:14 编辑
苏九思 发表于 2023-5-18 17:30
谢谢您,再问您一个问题,函数当中的局部变量是使用完就销毁还是等函数结束后销毁

百度:局部变量 存储位置
结束时(ret之前)销毁,一般来讲,编译器会处理这些事情,进函数时添加一些代码开辟一块内存(如同push或者malloc)用于存储局部变量,退出函数时添加一些代码用于销毁(如同pop或者free)。
可以在编译后看一下汇编代码是不是有这些处理。
专治疑难杂症
回复

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
 楼主| 发表于 2023-5-19 13:57:38 | 显示全部楼层
LcwSwust 发表于 2023-5-19 09:13
百度:局部变量 存储位置
结束时(ret之前)销毁,一般来讲,编译器会处理这些事情,进函数时添加一些代码 ...

感谢大佬
回复

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4418
金钱
4418
注册时间
2018-5-11
在线时间
923 小时
发表于 2023-5-20 16:13:32 | 显示全部楼层
本帖最后由 warship 于 2023-5-20 18:08 编辑

基本知识,函数内部定义的变量只存在于函数内部。
从编译处理的角度来看,
这些变量在代码中(Hex或bin文件中)根本就没有分配存储空间。
只在进入函数后临时从栈(STACK)中分配空间,
函数退出时其存储空间就被释放掉了,
船过水无痕。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1472
金钱
1472
注册时间
2021-8-10
在线时间
271 小时
发表于 2023-5-20 19:23:18 | 显示全部楼层
不会乱,内层同名变量会隐藏外层变量,作用域不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 08:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表