2016 - 2024

感恩一路有你

arm标准库函数怎么用 C语言,自定义函数要注意些什么?

浏览量:1394 时间:2023-05-28 17:13:59 作者:采采

C语言,自定义函数要注意些什么?

C语言中自定义函数最常见的注意点之一是区分 "价值传递 "和 "地址传递 "。 "价值转移 "和 "地址转移和都是一个字不一样,发音很接近,却是天壤之别。很多初学C语言的人,经常对通过函数传递一个数据值和一个地址感到困惑,以至于C程序的运行结果差别很大。这个回答会详细解释 "地址转移和和 "价值转移 "在C语言中。

用于值传递和地址传递的I. C程序代码,以阐明 "价值转移 "和 "地址转移和,让 让我们先来看一段C程序代码,如下:

上面的C程序代码很简单:在C程序的主函数中定义了两个整型变量para1和para2,初始值分别为1和2;还有一个指针变量pInt,它的初始值是变量para2的地址。

在c程序的主函数中,首先调用自定义函数ValueTrans,将变量para1作为参数。在自定义函数ValueTrans中,将变量para1重新赋值为11。调用函数ValueTrans后输出变量para1的值,看看是什么;

在C程序的主函数中,再次调用用户自定义函数AddrTrans,将指针pInt作为参数。在自定义函数AddrTrans中,将指针pInt指向的值重新赋值为22。调用函数AddrTrans后,输出变量para2的值,看看是什么;

现在让我们 让我们来看看这个C程序的运行结果:

惊讶不惊讶?惊讶吗?

第二,值传递和地址传递的解释现在让 下面解释一下为什么上面的C程序代码是这样的运行结果。

1.价值转移

上面的c程序代码调用函数ValueTrans,并将变量para1作为参数。注意,变量para1的值1被作为参数。

当执行ValueTrans函数时,系统会悄悄地在某个地方创建一个名为para1的新整数变量。这个整型变量para1并不是C程序代码主函数中的para1。我们可以把主函数中的para1看成main_para1,把函数ValueTrans中的para1看成ValueTrans_para1。然后在函数ValueTrans中,11实际上被赋给了变量ValueTrans_para1。至于变量main_para1,还是!

所以在C程序的主函数中,最后一个变量para1的值还是1。

2.地址传输

上面的c程序代码调用函数AddrTrans,将指针pInt作为参数。注意,此时变量para2的地址作为参数,有意思!当执行函数AddrTrans时,系统本身会在某个地方创建一个新的指针变量,也叫pInt。但是这个指针变量pInt的值就是main函数中那个pInt的值。换句话说,两个指针变量pInt同时指向C程序中主函数的变量para2。然后在函数AddrTrans中给指针pInt所指的值赋22,实际上改变了主函数中变量para2的值,很神奇!这就是C语言指针的魅力!

所以在C程序的主函数中,最后一个变量para2的值变成了22。

以上是C语言编程中自定义函数时需要注意的地方。你清楚了吗?

ARM指令中BL和BEQ是什么意思?还有LR指什么?不明白,刚开始学,请教下各路大神~~?

1.b,BL,跳。BL相当于c中的调用子函数,在跳转标签的末尾加上MOVPC,LR就可以返回BL的下一条指令。BEQ(比较相等,EQ相等)在BEQ指令之前应该有一个比较指令,比如CMP R0,R1如果R0R1,BEQ指令就执行,否则不执行。

链接寄存器(用来存储子程序的返回地址)LR相当于指针变量,指令在内存中的地址。如果子例程再次调用子例程,那么之前调用的子例程的返回地址应该存储在堆栈中。

函数 地址 指针

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。