社区
单片机/工控
帖子详情
C语言中函数的形参属于全局变量还是局部变量?
荒原狼的技术博客
2011-09-06 09:45:58
比如函数:
void initial_ds18b20(unsigned char a)
{
......
}
该函数中的形式参数"a"是属于全部变量呢,还是局部变量?
...全文
7331
11
打赏
收藏
C语言中函数的形参属于全局变量还是局部变量?
比如函数: void initial_ds18b20(unsigned char a) { ...... } 该函数中的形式参数"a"是属于全部变量呢,还是局部变量?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
荒原狼的技术博客
2011-09-07
打赏
举报
回复
多谢各位高手的指点,现在我明白了!……
northcan
2011-09-07
打赏
举报
回复
2
赋给形参的值是在进行函数调用时被压栈,在函数退出时出栈。
它肯定不是全局变量。
局部变量是指在程序中,只在特定过程或函数中可以访问的变量,是相对于全局变量而言的。全局变量也称外部变量,是在函数外部定义的,作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。
所以楼主将形参认为是局部变量吧。
AnYidan
2011-09-06
打赏
举报
回复
[Quote=引用 2 楼 kofbee 的回复:]
可是它是形式参数,是不存在的啊,怎么会有这个疑问呢?
英文名字不同:形参是parameter,实参是argument。 本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。
[/Quote]
请问 2 楼如何区分 声明变量 和 定义变量
局部变量
lr2131
2011-09-06
打赏
举报
回复
当然是局部变量啊,在进入到这个函数中,编译器会在栈中开辟空间,退出函数后系统移动栈指针就自动回收好了。如果在函数的外面还有unsigned char a的定义,那个是全局变量,在本函数如果不用::a的写法来特制外部的全局变量,一般被编译器默认为本函数内的局部变量。
楼主最好自己写个简答程序试试,要想了解深入点的话,自己写个简单程序,然后看看生成的汇编代码。
hjc12345678hjc
2011-09-06
打赏
举报
回复
局部变量
lbing7
2011-09-06
打赏
举报
回复
[Quote=引用 2 楼 kofbee 的回复:]
可是它是形式参数,是不存在的啊,怎么会有这个疑问呢?
英文名字不同:形参是parameter,实参是argument。 本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。
[/Quote]
补充一下,通常会用寄存器来进行参数传递
haotianmai
2011-09-06
打赏
举报
回复
2楼正解,看汇编就知道了
woshi_ziyu
2011-09-06
打赏
举报
回复
[Quote=引用 2 楼 kofbee 的回复:]
可是它是形式参数,是不存在的啊,怎么会有这个疑问呢?
英文名字不同:形参是parameter,实参是argument。 本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。
[/Quote]
问题确实很奇怪
在调用这个函数的时候才会进行内存分配 不过那时候就不知道是char a还是char b了
xiaohui663099509
2011-09-06
打赏
举报
回复
是局部变量,调用时开辟空间。调用完后,释放开辟的空间。
zm1142415
2011-09-06
打赏
举报
回复
局部变量
bee
2011-09-06
打赏
举报
回复
可是它是形式参数,是不存在的啊,怎么会有这个疑问呢?
英文名字不同:形参是parameter,实参是argument。 本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。
深入探讨
C语言
中
局部变量
与
全局变量
在内存
中
的存放位置
C语言
中
局部变量
和
全局变量
变量的存储类别(static,extern,auto,register)1.
局部变量
和
全局变量
在讨论
函数
的
形参
变量时曾经提到,
形参
变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明
形参
变量只有在
函数
内才是有效的,离开该
函数
就不能再使用了。这种变量有效性的范围称变量的作用域。不仅对于
形参
变量,C语言
中
所有的量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言
中
的变量,按作用域范围可分为两种,即
局部变量
和
全局变量
。1.1
局部变量
局部变量
也称为内部变量。
局部变量
是在
函数
内作定义说明的。其作用域仅限于
函数
内,离开该
函数
后再使用这种变量是非法的。【例1.1
C语言
中
的变量详解经典汇总
先说说变量的作用域,比如,在
函数
中
,
形参
变量只是在被调用期间才分配内存单元,调用结束立即释放。这就说明
形参
变量只有在函授内才是有效的,离开该
函数
就不能再使用了。 这种变量有效性的范围称为变量的作用域。当然不仅仅是
形参
变量,在C
中
所有的量都有自己的作用域。 C
中
的变量,按作用域可分为两种,
局部变量
和
全局变量
。
c语言
中
的
局部变量
和
全局变量
每个变量都有
属于
它的作用域,就是这些变量在什么范围内有效;我们按照变量的作用域范围可以把变量划分为
局部变量
和
全局变量
;
局部变量
局部变量
出现在三种地方: (1)在
函数
的开头定义的变量 (2) 在
函数
内的复合语句内定义的变量 (3)形式参数 在一个
函数
内部定义的变量只在本
函数
范围内有效,也就是只有本
函数
内才能引用它们,在此
函数
外不能使用这些变量; 在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量; 还有就是
函数
的
形参
,只在该
函数
内有.
关于
C语言
函数
形参
(
全局变量
)的几点说明
最近在写队列
函数
时,在调试过程
中
碰到
形参
的一些问题,作为心得写在这边。 1.
函数
的
形参
属于
局部变量
,仅在定义的
函数
内有效,
函数
返回后失效。 2.当在一个
函数
(比如main
函数
)内调用另外一个
函数
时,例如: void fun(unsigned char x) { x = x+1; } int main(void) { unsigned char data = 0x10; while(1)...
C语言
中
,当
全局变量
和
函数
形参
重名会发生什么?
最近在调试过程
中
,出现了一个很离谱的错误,在此记录一下。 在
C语言
中
,我们给
函数
传递数组时,一般是传递一个指向数组首元素的指针,实际上在
函数
内部,我们并不知道该数组的实际长度,但是当时调试的时候,单步进入这个
函数
中
,看这个指针显示是一个具体数值大小的数值。 当时百思不得其解,后面才发现是
函数
形参
和全全局局变量重名了,导致将传入的数组指针误认为是
全局变量
数组。 下面我用代码来还原一下当时的情况 #include <stdio.h> #include <string.h> int ar
单片机/工控
27,374
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章