完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我知道当我们将一个数组传递给函数时,只有数组的基本地址(指针左右)被传递,现在我的问题是如何传递一个2D数组并返回相同的值:例如,考虑这个代码片段:现在这个函数对4*4矩阵做了一些改变,并返回新的cha这个代码与GCC C++编译器很好地配合,但是当我想在XC8中实现这类代码时,它给了我错误。因为这个代码在它运行在PICUUS ISIS仿真芯片PIC18F26K22上时没有正确地完成。它运行并运行良好,直到调用。这个函数在主函数中遇到。在我的项目中,有必要使用2D数组,在需要时通过&返回它们,并且我有几个函数,如上面执行不同任务的函数,那么有没有有效的方法可以传递2D数组并返回它们?谢谢你的回复。
|
|
相关推荐
9个回答
|
|
您没有传递数组。您正在传递指向数组的指针。并返回指向同一个(现在改变的)数组的指针。或者在你的情况下指针指向指针(**)。C++与CunSchar char *MixId列(unSchar *BYARR)不一样的语言会更正确,“给我错误”总是包含错误的全文。
|
|
|
|
**不给你一个指向二维数组的指针。http://www. xARGS.com /pIC/C-FAQ.html你试过在一个真正的芯片上运行它吗?
|
|
|
|
首先,我还没有尝试在真实的芯片上运行它,我只是使用了模拟工具。以下是我在头文件中的代码:这是我的源代码:首先从UART读取16字节的文本,将接收到的数据转换为4*4矩阵阵列,使用这个4*4矩阵并调用mix_column函数使用返回ed 4*4矩阵并将其转换回1D.显示新文本。在运行时错误不在编译时间,但我确实收到这些警告15:警告:(1257)使用局部变量“_Block_.”,但从不给出31:警告:(1257)使用局部变量“_B_mat”,但从不给出值。除了混合列操作的数组输出(我得到一个空白文本)之外,我得到了所有的UART输出。这个代码实际上是制作AES-128代码的一小部分。
|
|
|
|
|
|
因此现在我必须声明它们用于全局,因为一旦执行了返回,它就指向不需要的内存。我还需要知道模拟是否总是给出接近确切的结果,就像在真正的芯片上编程一样?
|
|
|
|
你没有读过J庙宇的文章吗?只有当模拟器总是像一个真正的芯片。:)
|
|
|
|
不,你需要在C.写,而不是残缺不全的C++,你得到一个指向数组的指针。不是值。这意味着输入可以是输出。或者传递两个指针,一个用于输入,另一个用于输出。调用函数会分配内存。或者你可以在函数中声明数组为静态的,但是这样会浪费内存。模拟器给出确切的结果作为真正的芯片吗?它试图。是吗?唉。变形金刚模拟器真好,我不知道。要调试这样的算法,应该没问题,如果可以的话,就很破了。
|
|
|
|
您声明BubjMax,然后在不初始化它的情况下开始编写它。
|
|
|
|
嗯,我会这样做的,我意识到C比易写C++复杂得多,这就是为什么我能比现在的痛苦更快地完成算法编码的方法。我更喜欢通过输入和输出两个函数来传递这些值。请注意这项工作,我会应用这些变化,尝试解决自己的错误。谢谢。
|
|
|
|
只有小组成员才能发言,加入小组>>
5282 浏览 9 评论
2054 浏览 8 评论
1967 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3228 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2275 浏览 5 评论
819浏览 1评论
708浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
651浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
708浏览 0评论
605浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 04:39 , Processed in 1.025397 second(s), Total 58, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号