关于C语言函数形参(全局变量)的几点说明

您所在的位置:网站首页 c语言函数参数是数组的吗 关于C语言函数形参(全局变量)的几点说明

关于C语言函数形参(全局变量)的几点说明

2023-06-15 11:14| 来源: 网络整理| 查看: 265

最近在写队列函数时,在调试过程中碰到形参的一些问题,作为心得写在这边。 1.函数的形参属于局部变量,仅在定义的函数内有效,函数返回后失效。

2.当在一个函数(比如main函数)内调用另外一个函数时,例如:

void fun(unsigned char x) { x = x+1; } int main(void) { unsigned char data = 0x10; while(1) { fun(data); uartWrite (UART0, data, sizeof(data), NULL); } }

运行结果:0x10

虽然main函数调用fun函数,但是运算之后没有返回值,也就是data的值没有更新,还是0x10。 因此如果要通过一个函数改变某个变量的值,该函数必须要有返回值。将上述代码稍作修改:

unsigned char fun(unsigned char x) { x = x+1; retrun x; } int main(void) { unsigned char data = 10; while(1) { data = fun(data); uartWrite (UART0, data, sizeof(data), NULL); } }

运行结果:0x11

3.当全局变量作为形参输入函数进行运算时,分如下几种情况: (1)函数无返回值

unsigned char data = 10; void fun(unsigned char x) { x = x+1; } int main(void) { while(1) { fun(data); uartWrite (UART0, data, sizeof(data), NULL); } }

运算结果:0x10 由此可见,当全局变量作为参数输入函数进行运算时,其本身的值并未改变。 也就是说,全局变量作为形参输入函数进行运算时,其作用相当于局部变量,函数返回后失效。

(2)函数有返回值

unsigned char data = 10; unsigned char fun(unsigned char x) { x = x+1; retrun x; } int main(void) { while(1) { data = fun(data); uartWrite (UART0, data, sizeof(data), NULL); } }

运算结果:0x11 其实,这边全局变量data在fun函数内部的作用与例(1)一样,不过它将计算结果赋值于data,因此打印出来的data值为0x11。

(3)全局变量直接用于函数内部,不作为形参

unsigned char data = 10; void fun() { data = data+1; } int main(void) { while(1) { fun(); uartWrite (UART0, data, sizeof(data), NULL); } }

运算结果:0x11 全局变量的作用域为整个程序,只要不作为函数形参输入,它的计算值会实时更新。因此这边输出0x11。

文章对局部变量和全局变量作为形参输入进行了分类讨论,希望对相关同行有一定帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3