子函数内申请的空间传回主函数

本文介绍了一种通过二级指针或引用的方式在C++中实现跨函数间值的有效传递方法。具体展示了如何利用二级指针使子函数能够修改主函数中的指针变量,并将修改后的值成功返回。

 这里要用到二级指针,或者是引用,不然值不能传回去!

要是直接用

void test(int* n);

那么子函数得到的是*n的副本,在函数内n指向的内同改变,但是这个值传不回主函数!

 

 

#include <iostream>
void test(int** n);
int main()
{
	int *n;
	test(&n);
 	system("pause");
 	return 0;
}
void test(int** n)
{
 	int* a = new int;
 	*a = 5 ;
 	*n = a;
}




 

在STM32中,如果想要在中断服务程序(ISR)中处理一些数据,并将其返回主函数,通常的做法是通过共用内存区域、寄存器或者使用堆栈。这里我们介绍几种常用的方法: 1. **全局变量**:可以定义一个全局变量,在中断初始化时设置该变量的值,然后在中断结束后,ISR更新这个变量。在中断返回前,确保主函数已获取并处理了这部分信息。 ```c volatile uint32_t interruptData; // 定义全局变量 void MyInterrupt(void) { interruptData = ...; // 中断处理完成后的数据 } ``` 主函数中: ```c void main() { // ... enableInterrupt(); // 开启中断 while (1) { if (interruptData != 0) { // 检查中断数据是否准备好 handleInterruptData(interruptData); // 处理数据 interruptData = 0; // 清空数据标志 } } } ``` 2. **硬件触发中断的方式**:有些情况下,比如UART接收完成,可以配置硬件使得每接收到一帧数据就引发一次中断,此时可以通过读取特定的接收缓冲区来获取数据。 3. **利用堆栈**:如果你需要传递复杂数据结构,可以考虑使用栈。在进入中断时保存当前状态,然后处理数据,最后返回时恢复主函数状态。但这种方法需要更多的代码管理和中断上下文管理。 4. **使用结构体或枚举**:创建一个结构体或枚举,在其中包含你需要传递的信息,然后在中断中操作该结构体。 无论哪种方法,记得保持数据的一致性和同步性,同时遵守STM32的中断处理规则,避免数据冲突和资源抢占问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值