You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino中如何为String类型函数参数赋值并修改原变量?

Arduino中String类型函数参数赋值的正确方式

你的问题核心是函数参数的传递方式:当前代码里TEST函数采用值传递,函数内部修改的是原变量的副本,不会影响外部的str变量。

问题原因分析

你写的TEST(String str)是值传递逻辑,当调用TEST(str)时,程序会创建一个str的副本传入函数。函数内的str = "TEST"只是修改了这个临时副本,外部的原str变量完全不受影响,所以串口输出里str始终为空。

两种可行解决方案

1. 使用引用传递(推荐)

在参数类型后加&,让函数直接操作原变量本身,代码更简洁直观:

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  String str;
  bool res = TEST(str);
  Serial.println("res: " + String(res));
  Serial.println("str: " + str);

  delay(1000);
}

bool TEST(String &str)  // 加&表示引用传递
{
  str = "TEST";
  return true;
}

2. 使用指针传递

如果习惯用指针逻辑,也可以通过传递变量地址来修改原变量:

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  String str;
  bool res = TEST(&str);  // 传递str的内存地址
  Serial.println("res: " + String(res));
  Serial.println("str: " + str);

  delay(1000);
}

bool TEST(String *str)  // 参数为String类型指针
{
  *str = "TEST";  // 通过指针访问并修改原变量
  return true;
}

验证结果

修改后串口输出会符合你的期望:

res: 1
str: TEST

内容的提问来源于stack exchange,提问作者Runsva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:57:39