完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嗨,它应该是非常基本的,但就目前而言,我也找不到答案。我有以下代码:testfunction(testfunction)中的变量“testvar(testvar)”在哪里不能改变,ik固定为123。我理解错了什么?问候,CJ。
|
|
相关推荐
19个回答
|
|
|
是的,在C语言中,参数是通过值传递的,而不是通过引用传递的,这意味着您不能改变传递的变量的值。
|
|
|
|
|
|
嗨,达里奥,我怀疑这样的事。也许我搞糊涂了,因为在一些例子中,我发现(现在不能再找到它们)传递的变量是在一个方程(比如x=x+1)的结果中使用的(而且不是通过指针)。Thanx和greeting,CJ。
|
|
|
|
|
|
您一定已经看过一些C++代码了。
|
|
|
|
|
|
是的,这是非常有可能的。我忙于编写PIC和Windows应用程序。一旦迷惑,很难看到明显的解决办法!
|
|
|
|
|
|
嗨,CJ,我想你没有增加Test1。在这种情况下,你必须使用指针。如果希望使用增量testvar,并且调试器没有变化,那么代码可能非常简单,函数testFunction的内容可能毫无意义。可能应用了优化并且结果不同于预期。您可以尝试在增量之后向testFunction中添加PORTA=testvar之类的内容。
|
|
|
|
|
|
将变量作为指针(ANP;)而不是值传递。通过值传递的变量不能被函数修改。调用看起来像:testfunction(&temp1);函数看起来像:void testfunction(无符号char&testvar){*testvar+;}。
|
|
|
|
|
|
那应该是
|
|
|
|
|
|
TraceGuMeTs仍然是一个变量,所以你可以分配给它,取一个指针,或者你可以用一个变量做任何事情。然而,它不是原始变量。它是一个临时变量,用作为参数传递的表达式初始化。在这些情况下,原始变量根本不存在。只有使用表达式计算的值。该值被分配给临时变量,然后从函数中访问该临时变量。当函数终止时,临时变量将被销毁。
|
|
|
|
|
|
是的。最后,如果我只需要返回(或更改)一个值,我基本上从不使用“通过引用”方法——我只是简单地返回它。如果需要多个“更改”,则使用指针。或者,也许,用一个结构…
|
|
|
|
|
|
大家好,感谢所有的响应。我的印象是函数调用中的(新的)变量“创建”也可以改变。像(剥离到基本):我认为newtestvar是作为一个新变量创建的,也可以在testfunction()中改变。调用变量TestVAR1!其中testfunction(无符号char newtestvar)当然testvar2=newtestvar;工作正常,但是newtestvar+;不增加newtestvar。它保持它的值1。为了使它工作,我必须做如下事情:我必须创建一个新的变量testvar4,其中加载了新变量的值TestVar。并且TestVAL4可以改变,偏离航线。
|
|
|
|
|
|
你怎么知道的?如果修改后的变量从未在任何地方使用,那么编译器就不必费心去做。只要观察观察窗口中的变量就无法证明任何事情,除非向变量添加“volatile”属性。奥姆皮勒C标准不需要一个无意义的语句执行时,“不稳定”限定符没有被使用。
|
|
|
|
|
|
嗨,Ric,我正在使用PIC 24F16KM204,并用Pickit 3进行调试,这样我就可以监控MPLAB X中的变量了。现在我暂时休息一下,清醒的头脑可以创造奇迹!问候,CJ。
|
|
|
|
|
|
大家好,好,所以这是非常愚蠢的事情……我终于找到了问题的根源:a;.if(testvar>10)。后面的指令永远不会被执行,所以testvar也永远不会改变。我必须承认它是有点草率的代码,我通常试图避免,但是偶尔会进入我的脑海。感谢所有的响应。问候,CJ。
|
|
|
|
|
|
如果您发布了实际上失败的代码,而不是花一周时间来查找,那么错误很快就会被发现。
|
|
|
|
|
|
是的,我知道,我有一个小小的耻辱,我张贴了我的发现。我本来可以选择不这么做的!至于你对我的评论一个星期,我已经离开办公室一个星期了。所以不要只是妄下结论!问候,CJ。
|
|
|
|
|
|
一个像样的皮毛工具也应该找到它。
|
|
|
|
|
|
MPLABX不是一个足够好的抠图工具吗?(好吧,我得查一下,‘林庭’是什么意思)。它警告我一些可能的错误。有替代品,还是附加品?
|
|
|
|
|
|
我看到了:掩埋在屏幕截图中
|
|
|
|
|
|
实际上,该代码段应该生成编译器错误,因为没有“;”在{}内结束语句。也就是说,“之后”的指令总是会被执行。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
514 浏览 0 评论
5819 浏览 9 评论
2351 浏览 8 评论
2238 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3545 浏览 3 评论
1169浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1123浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
893浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
514浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 14:14 , Processed in 1.360126 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1924